【发布时间】:2020-11-11 17:17:13
【问题描述】:
在我的问题中遇到了一种情况,我必须输入多个字符串作为输入。 现在,我的逻辑是创建一个二维数组,其中(示例)
Input:
ABD
okay
将被存储为
[['A','b','D'],['o','k','a','y']]
理想情况下,它应该在我输入空字符串时终止。
但我的代码(如下)只接受第一个输入并终止。
char str[100];
char stringArray[50][100];
int k,m,count=0,i=0,j=0;
do {
scanf("%[^\n]",&str);
k=strlen(str);
for(m=0;m<k;m++){
stringArray[count][m]=str[m];
}
count++;
}
while (str[0] != '\0');
【问题讨论】:
-
请添加一个空格,以便 tnat
scanf("%[^\n]",&str);变为scanf(" %[^\n]",str);以删除缓冲区中留下的换行符(同时删除&)。 -
把
&也去掉str前面。但我会改用fgets -
scanf()无法读取空字符串。 -
如果你想读一行,使用
fgets()。 -
stringArray[count][m]=str[m];这样你就不会在字符串末尾存储\0,这会导致奇怪的结果
标签: c loops scanf newline do-while