1

从 C 中读取文件时如何标记?

文本文件:

PES 2009;科乐美;DVD 3;500.25;6

刺客信条;育碧;DVD;598.25;3

地狱;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, ";");
}

希望它打印出来:

实况足球 2009

科乐美

.

.

.

4

4 回答 4

1

尝试这个:


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

while (fgets(s1, 200, f))
{

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

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

}

200 字符大小当然只是一个例子

于 2009-12-01T11:22:43.010 回答
0

使用 strtok 是一个 BUG。尝试 strpbrk(3)/strsep(3) 或 strspn(3)/strcspn(3)。

于 2009-12-03T08:22:36.753 回答
0

您必须将文件内容读入缓冲区,例如逐行使用fgets或类似方法。然后用于strtok标记缓冲区;阅读下一行,重复直到 EOF。

于 2009-12-01T10:52:33.837 回答
0

strtok()接受 achar *和 aconst char *作为参数。您正在传递 aFILE *和 a const char *(在隐式转换之后)。

您需要从文件中读取一个字符串并将该字符串传递给函数。

伪代码:

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);
}
于 2009-12-01T10:54:12.417 回答