指定不包含空格的fscanf格式

时间:2019-03-31 17:00:22

标签: c scanf

我正在尝试使用fscanf()从c中的文本文件读取名称。但是,此文件中的名称不由空格分隔。我仍然可以使用此功能来分隔每个名称吗?

此文件目前包含以下文本:

"MARY","PATRICIA"

当我运行以下代码时:

FILE *nameFile;
char name1[100];
char name2[100];

nameFile = fopen("names.txt","r");

fscanf(nameFile, "%s,%s", name1, name2);
printf("name 1 : %s\n name 2 :%s\n", name1, name2);

fclose(nameFile);

我得到以下输出:

name1: "MARY","PATRICIA"
name2:

有没有办法在文件中没有空格的情况下分隔名称?

1 个答案:

答案 0 :(得分:3)

您必须指示fscanf()寻找另一个定界符,并使用%[格式化程序]剪切字段。

请尝试以下操作:

#include <stdio.h>

int main(int argc, char *argv[])
{
   FILE *nameFile;
   char name1[100];
   char name2[100];

   nameFile = fopen("names.txt","r");
   fscanf(nameFile, "%[^,],%[^,]\n", name1, name2);
   /* or fscanf(nameFile, "%[^,],%s\n", name1, name2); for second string */

   printf("name 1 : %s\n name 2 :%s\n", name1, name2);

   fclose(nameFile);

   return(0);
}