gpt4 book ai didi

c - 试图用两个定界符分开但它不起作用 - C

转载 作者:太空狗 更新时间:2023-10-29 16:04:55 25 4
gpt4 key购买 nike

我写了下面的代码来从标准输入 ex 逐行读取。

city=Boston;city=New York;city=Chicago\n

然后用';'分割每一行分隔符并打印每条记录。然后在另一个循环中,我尝试用“=”分隔符拆分记录以获取实际值。但出于某种原因,主(第一个)循环不会在第一次迭代之后循环,为什么?

char*   del1 = ";";
char* del2 = "=";
char input[BUFLEN];

while(fgets(input, BUFLEN, fp)) {

input[strlen(input)-1]='\0';
char* record = strtok(input, &del1);

while(record) {
printf("Record: %s\n",record);

char* field = strtok(record, &del2);
while(field) {
printf("Field: %s\n",field);
field = strtok(NULL, &del2);
}

record = strtok(NULL, &del1);
}
}

最佳答案

两件事:第一,这条线不是很好:

 input[strlen(input)-1]='\0';

fgets() 总是以 '\0' 结束,这会产生奇怪的结果,因为您的输入没有恰好在 '\n' 处结束。

其次,strtok()不能被同时调用两次。为此,使用 strtok_r(),它接收一个 char** 作为第三个参数来存储状态。

关于c - 试图用两个定界符分开但它不起作用 - C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1727008/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com