读书人

c语言字符串指针的有关问题 环境vc++6

发布时间: 2012-09-10 11:02:32 作者: rapoo

c语言字符串指针的问题 环境vc++6.0
#include <stdio.h>
void sstrcpy(char *s,char *t)
{
while(*s++=*t++);

//while (*t!='\0')
//{
//*s++=*t++;

//}
//*s='\0';
}
void main(){
char *s1="1213\0",*s2="dfasfdas";//[color=#FF6600][/color]这里vc报错 但改成char s1[]="1213\0",*s2="dfasfdas";就正常运行 求高手解答原因!!!!!!
sstrcpy(s1,s2);
printf(s2);
}

[解决办法]
又是这种问题,char *s1=“1213”;
这里的1213是常量,存储在常量区,strcpy(s1,s2),这里s1所指向的常量数据被修改,编译器一般来说会崩溃,常量是不允许被修改的,而char s1[]="1213",这里是数组,既s1[]={'1','2','1','3'},这里不是常量,所以直接修改没有问题,反正你记住,一般字符串的操作,第一个一般都不能是指针,用数组,比如strcpy,strcat等
[解决办法]

探讨
注意
char *p="abc"; 和 char p[]="abc"; 之间的差异

读书人网 >C语言

热点推荐