gpt4 book ai didi

c - 如何克服C语言中SCANF函数的解析错误?

转载 作者:行者123 更新时间:2023-11-30 18:02:20 26 4
gpt4 key购买 nike

如何用sscanf解析空子字符串......如果我的字符串 str[]="is first,,third,final."如果我的第二个子字符串为零,我无法读取第三个也是最后一个子字符串。有没有解决方案来克服这个错误......??????

**Code:**


#include <math.h>
#include <stdio.h>
#include <stdlib.h>

char *tokenstring = "first,second,25.5,15";
int result, i;
double fp;
char o[10], f[10], s[10], t[10];

void main()
{
result = sscanf(tokenstring,"%[^','],%[^','],%[^','],%s", o,t,s,f);`sscanf function`
fp = atof(s);
i = atoi(f);
printf("%s\n %lf\n %s\n %d\n", o,t,fp,i);
}
for this program if i execute my output is

`output`
>first
>second
>25.5
>15

但是如果我尝试删除 token 字符串指针中的子字符串“second”...并且如果我尝试执行,那么我得到的输出为:

char *tokenstring = "first,,25.5,15";

>first
>(blank)
>0.00
>0

我如何读取字符串“tokenstring”中的第三个和第四个子字符串...有什么建议吗????????? .

最佳答案

逐个字符解析输入

char part[4][1000] = {0};
const char *input = "first,,25.5,15";
size_t k, n;

for (k = 0; k < 4; k++) {
char *curr = part[k];
while (*input && *input != ',') {
*curr++ = *input++;
}
if (*input == ',') input++; else break;
}
/* (k+1) elements have been parsed */
for (n = 0; n < k + 1; n++) {
printf("part %d (between square parenthesis): [%s]\n", (int)n, part[n]);
}

关于c - 如何克服C语言中SCANF函数的解析错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9225919/

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