以下是询问用户的程序
输入名称,然后将名称打印出一个字母
一次,最终产生全名。
我有两个版本的程序。下面的一个
做一件奇怪的事情:如果我输入类似的东西
jkljljkliunionnklsaa
,它只会生成jkljljkl
。
但是,如果我限制char name[40]
,然后输入相同的名称,程序会显示整个名称。
我在程序中做错了什么并不能让它产生全名?
#include <stdio.h>
#include <string.h>
int main (void)
{
int i, s;
char name[s];
printf ("Type a name: ");
scanf ("%s", name);
for ( i = 0; i < strlen(name); i++)
{
printf ("%c", name[i]); // print the i-th character of name
}
printf("\n");
}
答案 0 :(得分:0)
在第一个版本中,您没有指定字符数组的大小,而是将其保留为name[s]
,其中s
是使用垃圾值初始化的整数。
然而,在第二种情况下,您将其设为name[40]
,其中技术上说可以容纳 39个字符长字符串。 (39.想想为什么??? )