一段代码,用于声明最多包含 16 个值和 10 个名称的字符数组,一条语句将字符数组作为字符串读取,然后使用 %s 格式字符将它们作为字符串打印出来。从键盘输入名称。
int i;
char name[10][16];
for(i=0; i<10; i++){
scanf("%s", name[i]);
}
for(i=0; i<10; i++){
printf("%s", name[i]);
}
我通过键盘输入姓名后,ctrl+d 不显示任何内容。
例如输入:
莱纳斯
晨曦
扬子
ctrl+d
最佳答案
正如所写,无论如何,您的代码都会尝试读取 10 个名称。
要在文件结尾处退出(例如,在某些操作系统中输入 control-D ENTER),您需要在读取数据的循环中检查文件结尾。在这种情况下,您还需要记住您读取了多少个值,并且只打印该数字。 (如果不这样做,它似乎会起作用,但只是因为数组被初始化为零。如果稍后再次使用相同的数组,则可能会得到乱码结果。)
请参阅 scanf 的手册页并查找 EOF。
您可能还想打印每个名称并在末尾添加换行符。
关于字符串二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47166001/