我需要将用户输入的 20 个单词放入二维数组中并打印出来 我当前的代码是
char array2[20][20];
int i;
for(i=0;i<20;i++)
{
printf("enter a word\n");
scanf(" %[^\n]",array2[i]);
}
for(i=0;i<colsize2;i++)
{
printf("\n");
for(j=0;j<rowsize2;j++)
{
printf("%c",array2[i][j]);
}
}
(我不知道 %[^\n] 是什么,但它比 %c 或 %s 更好用)
没有编译器错误,程序会运行,但是当它在输入所有单词后打印数组时,我得到的完全是垃圾
喜欢
aş(M▒awn-US▒ e▒(<▒▒t/▒▒▒(5h▒tr:▒( qh▒tdle__000 HW5.exe▒`wauld▒(▒&Oe,▒*a▒+a▒▒
太多以至于需要滚动一下才能回到我的程序的开始
这个程序中确实有更多内容不在我的问题范围内,但我 99% 确定它不会与我这里的内容混淆,但如果您确实想查看其余部分,请询问
我真的刚刚开始编程所以我还不知道 diddly 蹲下所以如果你在回答时也能记住这一点这是学校作业所以它不需要完美它只需要完成工作
感谢回答这个问题的人,我已经为此苦苦挣扎了几个小时
最佳答案
格式字符串
" %[^\n]"
^ note the leading space
表示 scanf
将首先读取并丢弃任意数量的前导空白字符,然后匹配包含换行符的任意字符序列。如果输入字符串对于调用未定义行为的缓冲区来说太大,scanf
可能会溢出它保存字符串的缓冲区。 %s
格式说明符意味着 scanf
跳过前导空白字符并读取输入字符串,直到它遇到一个空白,此时它将一个终止空字节附加到它写入的缓冲区进入然后返回。
因此,你需要的是
char array2[20][20];
int i;
for(i = 0; i < 20; i++)
scanf("%19s", array2[i]);
for(i = 0; i < 20; i++)
printf("%s\n", array2[i]);
关于c - 将字符串扫描到 C 中的二维数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23003779/