Токенизация из чтения текстового файла в массив в C - PullRequest
1 голос
/ 01 декабря 2009

Как вы токенизируете, когда читаете из файла в C?

текстовый файл:

PES 2009; Konami; DVD 3; 500,25; 6

Assasins Creed; Ubisoft; DVD; 598,25; 3

Inferno; EA; DVD 2; 650,25; 7

char *tokenPtr;

fileT = fopen("DATA2.txt", "r"); /* this will not work */
  tokenPtr = strtok(fileT, ";");
  while(tokenPtr != NULL ) {
  printf("%s\n", tokenPtr);
  tokenPtr = strtok(NULL, ";");
}

Хотелось бы распечатать:

PES 2009

Konami

.

.

.

Ответы [ 4 ]

1 голос
/ 01 декабря 2009

попробуйте это:


main()
{
    FILE *f;
    char s1[200],*p;
    f = fopen("yourfile.txt", "r");
    while (fgets(s1, 200, f))
    {</p>

<pre><code>while (fgets(s1, 200, f))
{

    p=strtok(s1, ";\n");

    do
    {
        printf ("%s\n",p);
    }
    while(p=strtok(NULL,";\n"));
}

} размер 200 символов - это, конечно, пример

0 голосов
/ 03 декабря 2009

Использование strtok - это ошибка. Попробуйте strpbrk (3) / strsep (3) ИЛИ strspn (3) / strcspn (3).

0 голосов
/ 01 декабря 2009

strtok() принимает char * и const char * в качестве аргументов. Вы передаете FILE * и const char * (после неявного преобразования).

Вам нужно прочитать строку из файла и передать эту строку в функцию.

Pseducode:

fopen();
while (fgets()) {
    strtok();
    /* Your program does not need to tokenize any further,
     * but you could now begin another loop */
    //do {
        process_token();
    //} while (strtok(NULL, ...) != NULL);
}
0 голосов
/ 01 декабря 2009

Вы должны прочитать содержимое файла в буфер, например, строка за строкой, используя fgets или подобное. Затем используйте strtok для токенизации буфера; прочитайте следующую строку, повторяйте до EOF.

...