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