C语言多行字符串输入问题

不明确具体输入行数

对于没有确定的输入行数时,一般采用Ctrl+Z结束输入。

对于输入多个字符串,可以保存在二维数组中

1.~scanf方式

char str[100][100];
int i=0;
while(~scanf("%s",str[i]))
{
	i++;
}

scanf函数的返回值为正确输入值的个数,如果没有正确输入,scanf返回值为-1,然后取反,就为0,退出循环

但是,这会产生一个问题,当输入空格也会结束输入使的行数增加

下面进行改进

while(gets(a[i]))
    {
        if(strcmp(a[i]," ")==0)
        {

            break;
        }
        i++;
    }

**实现思路:**通过比较输入行和空字符串是否相等,如果相等则退出输入

2.EOF

EOF即:End of file,文件结束符

char str[100][100];
int i=0;
while(scanf("%s",str[i])==1)
{
	i++;
}

这里的1代表的是输入的元素的个数,表示输入元素个数不为1则结束循环

3.scanf

char a[30];
scanf("%[^\n]",a);

scanf中的*[^\n]\表示遇到换行才结束输入*

\

更多推荐

C语言多行字符串输入问题