strtok()(C)意外结果
我打开一个文本文件,如下所示:strtok()(C)意外结果,c,file,strtok,C,File,Strtok,我打开一个文本文件,如下所示: <2504><titlos><desc><paragwgos> 所以我写了这部分代码: void readB(char *buffer, char *title, char *description, char *producer) { char s[2]="><", *token; token = strtok(buffer, s); strcpy(title, tok
<2504><titlos><desc><paragwgos>
所以我写了这部分代码:
void readB(char *buffer, char *title, char *description, char *producer)
{
char s[2]="><", *token;
token = strtok(buffer, s);
strcpy(title, token);
token = strtok(NULL, s);
strcpy(description, token);
token = strtok(NULL, s);
strcpy(producer, token);
}
int main()
{
int num;
char t[100], d[100], p[100], buffer[408];
FILE *f;
if ( (f = fopen("inp.txt", "r"))==NULL )
{
printf("Error opening requested file!");
exit(1);
}
fscanf(f, "%*c%d", &num);
fgets(buffer, 408, f);
readB(buffer, t, d, p);
printf("%d %s %s %s\n", num, t, d, p);
fclose(f);
return 0;
}
但不是2504个提特罗斯·德斯帕拉戈斯
它显示:2504 titlos desc pa
有人看到代码有什么问题吗 与问题无关,但不要使用read作为函数名。同意@EugeneSh。和char s[2]=>@ecentuagreese请不要在回应评论时动态编辑问题。它扰乱了对话的流程。是的,我的错!谢谢,伙计们,现在一切都很好。当你们认为你们知道自己最有可能为一个讨厌的惊喜做好准备的时候。
void readB(char *buffer, char *title, char *description, char *producer)
{
char s[2]="><", *token;
token = strtok(buffer, s);
strcpy(title, token);
token = strtok(NULL, s);
strcpy(description, token);
token = strtok(NULL, s);
strcpy(producer, token);
}
int main()
{
int num;
char t[100], d[100], p[100], buffer[408];
FILE *f;
if ( (f = fopen("inp.txt", "r"))==NULL )
{
printf("Error opening requested file!");
exit(1);
}
fscanf(f, "%*c%d", &num);
fgets(buffer, 408, f);
readB(buffer, t, d, p);
printf("%d %s %s %s\n", num, t, d, p);
fclose(f);
return 0;
}