Правильный формат для ввода в формате fscanf, используя [^ ...]? - PullRequest
0 голосов
/ 08 апреля 2011

Я пытаюсь прочитать файл с форматом #string 1 ## string 2 ## .... и т. Д., Используя знак «#» в качестве единственного разделителя. Я также пытаюсь скопировать каждую строку в массив символов. Вот немного моего текущего кода, но он не работает:

char temp[20];
if(fscanf(fp, "%15[^#]", temp ==1) ....

fp открывается и объявляется, и этот оператор всегда отображается как ложный (неудачное сканирование).

Мысли

Ответы [ 2 ]

1 голос
/ 08 апреля 2011

Я написал маленький рабочий пример . Не стесняйтесь изменить его в соответствии с вашими потребностями:)

#include <stdio.h>
#include <string.h>

int main(void) {
  char input[] = "#string 1##string two##three##last but one##five#";
  char tmp[100];
  char *pinput = input;
  /* the conversion specification is
  **                      %99[^#]
  ** the other '#' are literals that must be matched */
  while (sscanf(pinput, "#%99[^#]#", tmp) == 1) {
    printf("got [%s]\n", tmp);
    pinput += strlen(tmp) + 2;
  }
  return 0;
}
1 голос
/ 08 апреля 2011

Я думаю, вам, вероятно, нужно:

...