如何使用 strtok() 将给定的包含空格的字符串拆分为多个字符串?
How to use strtok() to split the given string containing spaces into multiple strings?
我有一个名为 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;
}
您可以遍历所有字符,然后输出其中一个
- 您刚刚阅读的角色或
- 如果字符是 space,换行符
您首先遍历文件中的所有行,然后您遍历strtok()
returns.这意味着你只会标记 last 行 read.
您需要嵌套这些循环——读取一行,标记化,然后读取下一行。
while( fgets( str2, MAXCHAR, fp2 )) {
char * ptr;
line++;
// printf(" %s",str2);
ptr = strtok(str2, delim);
while(ptr != NULL)
{
printf("%s\n", ptr);
ptr = strtok(NULL, delim);
}
}
我有一个名为 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;
}
您可以遍历所有字符,然后输出其中一个
- 您刚刚阅读的角色或
- 如果字符是 space,换行符
您首先遍历文件中的所有行,然后您遍历strtok()
returns.这意味着你只会标记 last 行 read.
您需要嵌套这些循环——读取一行,标记化,然后读取下一行。
while( fgets( str2, MAXCHAR, fp2 )) {
char * ptr;
line++;
// printf(" %s",str2);
ptr = strtok(str2, delim);
while(ptr != NULL)
{
printf("%s\n", ptr);
ptr = strtok(NULL, delim);
}
}