从文本文件读取到 C 数组中进行标记化

发布于 2024-08-13 01:11:52 字数 461 浏览 6 评论 0原文

当你用 C 语言读取文件时,如何进行标记化?

文本文件:

PES 2009;Konami;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, ";");
}

希望打印出:

PES 2009

Konami

How do you tokenize when you read from a file in C?

textfile:

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

Would like it to print out:

PES 2009

Konami

.

.

.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

帅的被狗咬 2024-08-20 01:11:52

试试这个:


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

}


the 200 char size is just an example of course

try this:


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

}

the 200 char size is just an example of course

溺ぐ爱和你が 2024-08-20 01:11:52

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

You must read the file content into a buffer, e.g. line by line using fgets or similar. Then use strtok to tokenize the buffer; read the next line, repeat until EOF.

窝囊感情。 2024-08-20 01:11:52

strtok() 接受 char *< /code> 和一个 const char * 作为参数。您正在传递一个 FILE * 和一个 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);
}

strtok() accepts a char * and a const char * as arguments. You're passing a FILE * and a const char * (after implicit conversion).

You need to read a string from the file and pass that string to the function.

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);
}
天生の放荡 2024-08-20 01:11:52

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

Using strtok is a BUG. Try strpbrk(3)/strsep(3) OR strspn(3)/strcspn(3).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文