你定义的是char数组,gets(a)是要求全部输入的,一回车就确定你输入了~这个函数就是这样的,你输入abc按回车就是,说你复制a[0]='a',a[1]='b',a[2]='c',其他还是空~如果你要换成一个一个输的话就用for吧将gets(a);
改成int
i;for(i=0;i<20;i++)
scanf("%c",&a[i])这样就行了~
常用的方法有两种:
1、通过getchar循环读入每个字符,存到数组中,直到遇到换行符,结束循环并赋值结束符。
参考代码:
char s[100];
int i;
i = 0;
while((s[i]=getchar())!='\n') //循环读入,并赋值到数组中,直到遇到回车。
i++;
s[i+1]='\0';//赋值结束符。2、通过gets或者fgets函数读入一行。
不过通过gets函数获取的虽然是一行输入,但是结尾的\n会被替换为结束符\0,所以如果要在字符串中存在换行符,那么需要手动增加。
参考代码:
char s[100];
int len;
gets(s);//读入整行。
len = strlen(s);//获取读入字符串长度。
s[len] = '\n';//结尾增加换行符。
s[len+1] = '\0';//赋值新的结束符。注意使用到strlen,程序需要包含头文件string.h。