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/