写了三个小的几乎一样的test代码,但是输出却不同,不明白为什么,求大神指点。
全部代码如下:
#include
void sub1(void);
int main()
{
/*test1*/
sub1();
/*test2 */
char w0[2]={'a','a'};
char * pc0 = w0;
printf("\nw1 = %s",w0); /*wrong*/
printf("\nw1 = %s",pc0); /*wrong*/
/*test3 */
char w1[2];
char * pc = w1;
printf("\n\nInput:");
scanf("%2s",w1); /*try input aa*/
printf("\nw1 = %s",w1); /*right*/
printf("\nw1 = %s",pc); /*right*/
return 0;
}
void sub1(void)
{
char w1[2];
char * pc = w1;
printf("\nInput:");
scanf("%2s",w1); /*try input aa*/
printf("\nw1 = %s",w1); /*right*/
printf("\nw1 = %s",pc); /*wrong*/
}
凡是scanf输入的地方,都是输入aa,然后回车。请问为何得到的结果,三个都不同。我在注释里标明了正常输出的代码和错误输出的代码。理论上3个实验中,字符串都没有用\0结尾,那么为何有些能够正常输出?