|
兄弟在试验溢出区的时候遇到了令我迷惑的事情,希望高手解惑,
(源代码,tc 3.0编译):
#include "stdio.h"
#include "string.h"
void main()
{
/*定义两个字符数组a[10],b[5],有问题*/
printf("input a[10]");
scanf("%s",a);
strcpy(b,a);//将a考入b中
printf("a is %s",a);
printf("b is %s",b);
}
问题:
1:定义 char a[10],b[5]; 注意 a[10]在前.
输入12345 a=12345 b=12345.
输入12345678 a=78 b=12345678
输入123456789012345 a=789012345 b=123456789012345
如果定义 static char a[10],b[5]; 注意 a[10]在前,加入static.
输入12345 a=12345 b=12345.
输入12345678 a=12345678 b=12345678
输入1234567890 a=123456789012345678901 a[10] b=12345678901 a[10] 注意空格和'a[10]'都是输 出的
2:定义 char b[5],a[10]; 注意 b[5]在前.
输入12345 a=12345 b=12345.
输入12345678 a=12345678 b=12345678 但屏幕下又输出 (abnormal program terminaturn)
输入1234567890 a=123456789012345678901(还有一个A上有两个点 的字符)
b=12345678901(还有一个A上有两个点的字符)
如果定义 static char b[5],a[10]; 注意 b[5]在前,加入static.
输入12345 a=空 b=12345.
输入12345678 a=678 b=12345678
输入1234567890 a=67890 b=1234567890
输入123456789012345 a=6789012345 b=123456789012345
我在迷茫中 |
|