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

时间:2018-12-20 21:56:30

标签: c arrays

以红色显示一个名为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

2 个答案:

答案 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个字符串后退出循环。谁知道?但是要么这样做,要么循环直到读取一行失败。