C中指针问题

来源:百度知道 编辑:UC知道 时间:2024/05/21 10:28:17
main()
{char *str1,*str2;
scanf("%s",str1);
scanf("%s",str2);
printf("%s\n%s\n",str1,str2);
}
第一个输入中有uy组合的比如说duyang的话只会输出du,后面的ang就没有了,第二个则没有问题。很不明白,希望高手指点一下。

你定义的只是字符指针,如果要用字符指针操作字符串,必须先开辟相应的动态内存空间,可以用malloc,也可以直接用关键字new。或者指向先前定义过的字符数组。
总之一句话,你定义的指针只有一个字节的内存空间,所以会造成你所说的现象,所以必须开辟新的空间。

“第一个输入中有uy组合的比如说duyang的话只会输出du,后面的ang就没有了,第二个则没有问题”,不是这样吧,应该是输出不了东西的
我觉得你把指针和数组弄混了,虽然相似,但还是有区别的
main()
{char str1[100],str[100];
scanf("%s",str1);
scanf("%s",str2);
printf("%s\n%s\n",str1,str2);
}
这样就行了

先定义字符数组,然后将指针指向他。
a[20],b[20];
str1=a;
str2=b;

你这是野指针,未经初始化的指针
结果是不可预料的