我读了一个名为names.txt的文件,里面包含名字和名字。我把名字打印出来,只是为了看看,它是否工作
for (int counter = 0; counter < 10; counter ++) {
fscanf(names, "%s %s\n", firstname, secondname);
printf("%s%s\n", firstname, secondname);
}
我尝试访问firstname[x]的特定字符串,但这只得到firstname中的一个字符
现在是否可以只打印红色文件names.txt的第七个名字和第二个名字?
2条答案
按热度按时间noj0wjuj1#
此代码现在将只打印第7个名字和第2个名字,
dgsult0t2#
是的,如果您只想打印第7个名称,请在
printf
周围设置一个条件:现在就你的方法的其他问题做一些一般性的评论。首先,你没有对你的输入做边界检查,这可能会导致缓冲区溢出。
从文件中阅读字符串的一般建议是使用
fgets
。如果你的缓冲区足够大的话,这将读取一整行。然后你可以使用strtok
将该行拆分成多个名称,或者使用strchr
查找第一个空格。另一个问题是你没有测试输入是否成功。
fscanf
返回成功读取的元素数。如果不等于2,你可能应该放弃循环。最后,您正好循环了10次,这就对文件的内容做了一个大胆的假设。也许您想在阅读第7个字符串后退出循环。谁知道呢?但要么这样做,要么循环直到读取一行失败。