C语言 是否可以访问文件中的特定字符串

5tmbdcev  于 2022-12-03  发布在  其他
关注(0)|答案(2)|浏览(116)

我读了一个名为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的第七个名字和第二个名字?

noj0wjuj

noj0wjuj1#

for (int counter = 0; counter < 10; counter ++) 
{
    fscanf(names, "%s %s\n", firstname, secondname);
    if(counter==6)
    printf("%s%s\n", firstname, secondname);
}

此代码现在将只打印第7个名字和第2个名字,

dgsult0t

dgsult0t2#

是的,如果您只想打印第7个名称,请在printf周围设置一个条件:

if (counter == 6)
    printf("%s%s\n", firstname, secondname);

现在就你的方法的其他问题做一些一般性的评论。首先,你没有对你的输入做边界检查,这可能会导致缓冲区溢出。
从文件中阅读字符串的一般建议是使用fgets。如果你的缓冲区足够大的话,这将读取一整行。然后你可以使用strtok将该行拆分成多个名称,或者使用strchr查找第一个空格。
另一个问题是你没有测试输入是否成功。fscanf返回成功读取的元素数。如果不等于2,你可能应该放弃循环。
最后,您正好循环了10次,这就对文件的内容做了一个大胆的假设。也许您想在阅读第7个字符串后退出循环。谁知道呢?但要么这样做,要么循环直到读取一行失败。

相关问题