Указание формата для fscanf, который не содержит пробелов - PullRequest
0 голосов
/ 31 марта 2019

Я пытаюсь использовать 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 Ответ

3 голосов
/ 31 марта 2019

Вы должны указать fscanf () искать другой разделитель, обрезая поля (используя% [formatter).

Пожалуйста, попробуйте это:

#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);
}
...