c - strtok 函数无法正常运行

标签 c

LOG.txt 文件:

2327 - Your account is created on 01/09/15 # 
2327 - Amount:100 withfrawed from your account on 01/09/15 #

此代码显示第一次编译时的输出和第二次编译时的其他输出。我犯了什么错误

#‎include‬<stdio.h>
#include<conio.h>
#include<string.h>
FILE *fp;

void main()
{
    int i=0;   
    char temp[10],log[10000],*token;
    char s1[2] = "#",s2[2] = "-",logger[100][70],no[100][10];
    clrscr();

    fp=fopen("LOG.TXT","r");

    while(fscanf(fp,"%s",temp)!=EOF)
    {
        strcat(log,temp);
        strcat(log," ");
    } 
    fclose(fp);
    printf("%s",log);
    token = strtok(log,s1);

    while(token!=NULL)
    {
        strcpy(logger[i],token);
        i++;
        token = strtok(NULL,s1);
    }

    i=0;
    token = strtok(logger[i],s2);
    while(token!=NULL)
    {
        strcpy(no[i],token);
        i++;
        token = strtok(logger[i],s2);
    }
    getch();
}

最佳答案

您的问题很可能在这里:

strcat(log,temp);
strcat(log," ");

您没有初始化log,这意味着内容不确定并且以这种方式使用log 会导致undefined behavior .

请记住,strcat 查找字符串终止符 '\0' 以了解它应该从何处开始追加,未初始化的局部非静态变量将具有看似随机的内容.

关于c - strtok 函数无法正常运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27960604/

相关文章:

c - MIPS 到 C 的翻译

计数 BST 子树,直到找到特定的给定键(中序遍历)

c - 字符串检查 c pangramm 中带有制表符的字母

c - 为什么我不能使用 fscanf() 从文件中读取连续字符?

c - 为什么这段代码会出现段错误? (指针运算)

c - 双向结构指针链接,C

c++ - 介子 对用户定义函数的 undefined reference

c++ - C block 扩展 (libBlocksRuntime) - 为 Block_copy() 使用自定义内存分配器 (Boehm GC)

c - 在 Matlab 的 c 代码中设置 #define

c - 如何通过引用将 size_t 参数传递给函数并在 C 编程中取回结果