gpt4 book ai didi

c - 将字符串扫描到 C 中的二维数组中

转载 作者:太空宇宙 更新时间:2023-11-04 03:47:46 25 4
gpt4 key购买 nike

我需要将用户输入的 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__000HW5.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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com