字符串二维数组

标签 c arrays

一段代码,用于声明最多包含 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/

相关文章:

php - 将多维数组插入mysql PHP的递归函数

javascript - 从数组的字典 JS 获取数据时出现问题

c - 获取可执行文件中文本部分的开始和结束地址

Android 字节数组转字符串转字节数组

C - 如何实现 Set 数据结构?

c 指向结构的自由指针

c++ - 从不与对象大小对齐的连续固定大小缓冲区解析对象的有效方法

javascript - 使用 next() 使用迭代器对象迭代两个 JavaScript 数组

c - 要求用户在 switch 语句中输入,这将在 c 中生成另一个开关

c++ - Malloc 或 Calloc 以及何时