1

C でファイルから読み取るときに、どのようにトークン化しますか?

テキストファイル:

PES 2009;コナミ;DVD 3;500.25; 6

アサシン クリード;Ubisoft;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

ファイルの内容をバッファに読み込む必要があります。たとえば、を使用するなどして1行ずつ読み込む必要がありますfgets。次に、を使用strtokしてバッファをトークン化します。次の行を読み、EOFまで繰り返します。

于 2009-12-01T10:52:33.837 に答える
0

strtok()引数としてachar *とaを受け入れます。(暗黙の変換後) aとaconst 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);
}
于 2009-12-01T10:54:12.417 に答える
0

strtok の使用はバグです。strpbrk(3)/strsep(3) または strspn(3)/strcspn(3) を試してください。

于 2009-12-03T08:22:36.753 に答える