这段代码有什么问题,运行时出错。
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(坏[其实偶不是什么所谓的坏人]) !