【发布时间】:2020-08-20 07:49:55
【问题描述】:
我有一个名为 email.txt 的文件,其中包含一些文本。我正在尝试将包含空格的给定字符串拆分为多个字符串。我编写的程序没有将单词分成单独的行。它给了我文件最后一个单词的输出。 这是我的代码
#include <stdio.h>
#include <string.h>
#define MAXCHAR 1000
int main()
{
FILE *fp2;
char str2[MAXCHAR];
int line = 0;
char delim[] = " ";
int init_size = strlen(str2);
fp2 = fopen("email.txt","r");
while( fgets( str2, MAXCHAR, fp2 )) {
line++;
// printf(" %s",str2);
}
char *ptr = strtok(str2, delim);
while(ptr != NULL)
{
printf("%s\n", ptr);
ptr = strtok(NULL, delim);
}
return 0;
}
【问题讨论】:
-
如果域名之间用空格隔开可以使用
fscanf(fp2, "%s", str2) -
“我写的程序没有给我想要的输出。它不工作。”这不是一个有用的问题描述。它输出的是什么?你提供什么输入?您对该样本输入的期望输出是什么?
-
你可以在这里找到解决方案stackoverflow.com/questions/2523467/…
-
当
str2仍未初始化时,您执行strlen(str2)。这会导致未定义的行为。 -
您可以使用 String Literal 表示
delim,例如const char *delim = " ";,但您可能还想添加'\t'和'\n',因此如果分隔符是tab,您的解析仍然有效,'\n'确保您从最后一个域中修剪'\n',例如const char *delim = " \t\n";