![](/img/trans.png)
[英]Changing a character of a string in a 2D string array causes Segmentation fault
[英]Character String 2D array
这是一段代码,用于声明一个最多包含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。
您可能还希望在每个名称的结尾加上换行符。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.