首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

这段代码有什么有关问题,运行时出错

2012-03-20 
这段代码有什么问题,运行时出错。intmain(intargc,char*argv[]){//目的是取出bcdechar*str abcdefg cha

这段代码有什么问题,运行时出错。
int   main(int   argc,   char   *argv[])
{
//目的是取出bcde

char   *str= "abcdefg ";
char*   tmp=new   char[5];
tmp=str+1;
tmp[4]= '\0 ';
printf( "%s\n ",tmp);      
system( "PAUSE ");
return   0;
}

[解决办法]
memset(tmp, 0, 5);
strncpy(tmp, str + 1, 4);
这样就好了吧
[解决办法]
char *str= "abcdefg ";
str所指向的地址是字符串常量
tmp=str+1;
tmp也就所指向的地址是字符串常量
tmp[4]= '\0 ';
試圖更改字符串常量的內容,所以會chucuo。
你應該自己將str的內容拷貝到tmp中。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[])
{
//目的是取出bcde

char *str= "abcdefg ";
char* tmp=new char[5];
memcpy(tmp,str+1,4);
tmp[4] = '\0 ';
printf( "%s\n ",tmp);
system( "PAUSE ");
return 0;
}

[解决办法]
tmp=str+1;
tmp[4]= '\0 ';这个时候改写了,常量存储区域,所以会出错
[解决办法]
同意 akirya(坏[其实偶不是什么所谓的坏人]) !

热点排行