c - strtok 不丢弃换行符

标签 c

所以我有一个包含一堆名称和数字的输入文件。我开始使用 strtok 分解字符串,以便从每个字符串中提取所有数据。一切似乎都在正常工作,但由于某种原因,它没有丢弃换行符。

int procFile(PERSON **data, FILE* fpFile)
{
//  Local Declaration
char temp[1000];
char proc[15];
char *entry;
char *loc;
int success = 0;

//  Statement
if(fgets(temp, sizeof(temp), fpFile))
{
    (*data) = aloMem(); // free
    entry = temp;
    loc = strtok(entry, " ()-");
    strcpy(proc, loc);
    loc = strtok(NULL, " ()-");
    strcat(proc, loc);
    loc = strtok(NULL, " ()-");
    strcat(proc, loc);
    sscanf(proc, "%ld", &(*data)->phone);
    loc = strtok(NULL, "\0");
    strcpy((*data)->name, loc);
    success++;
    printf("%s1", (*data)->name);
}

return success;
}// procFile

我尝试打印结果以查看它是否正常工作,这是我的输出。

Brown, Joanne
1South, Frankie
1Lee, Marie
1Brown, Joanne
1Trapp, Ada Eve
1Trapp, David
1White, D. Robert
1Lee, Victoria
1Marcus, Johnathan
1Walljasper, Bryan
1Trapp, Ada Eve
1Brown, Joanne
1Andrews, Daniel

它在换行符的每个名称之后打印 1,而不是紧跟在名称之后。有人可以向我解释如何解决这个问题吗?

最佳答案

将\r\n 和\t 添加到 strtok 中的分隔符列表

关于c - strtok 不丢弃换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16677800/

相关文章:

c - 《Head First C》一书中demo中的一个strstr()和fgets()的问题

c - C 中 64 位整数的模乘法

将 Linux C 字符数组转换为 Int

c++ - 无法理解此程序中检查自守编号的错误?

C - 将结构解构为 char 数组

c - 如何使用命令中的参数运行 execlp

c - C 中的奇怪段错误

javascript - Emscripten 未优化

c - 如何确定 C 与数组的互操作性

编译内核模块、头文件问题、makefile 问题