gpt4 book ai didi

c - scanf 分隔符和空字符串

转载 作者:太空宇宙 更新时间:2023-11-04 01:04:42 26 4
gpt4 key购买 nike

我在使用带分隔符的 sscanf() 读取值时遇到问题。

sscanf(line, "%15[^:]:%20[^:]:%d:%d:%50[^:]:%25[^:]:%25[^\n]",
string1, string2, &value1, &value2, string3, string4, string5);

只有当线路是这样的时候才会有问题:

abc:defg:1:2::hijk:no

当我打印出字符串/值时,一切正常,直到“字符串 3”。它输出一些奇怪的字符,然后 'string4' 输出一个空格,而 string5 输出一个类似的奇怪字符。

有人知道如何扫描正确的值吗?

编辑:我的意思是 abc:defg:1:2::hijk:no,不是 abc:defg:1:2::hijk:lm:no

最佳答案

您需要检查 scanf() 调用的返回值

errno = 0;
int chk = sscanf(line, "%15[^:]:%20[^:]:%d:%d:%50[^:]:%25[^:]:%25[^\n]",
string1, string2, &value1, &value2, string3, string4, string5);
switch (chk) {
case 7: /* all ok */;
break;
case 6:
case 5:
case 4:
case 3:
case 2:
case 1:
case 0: /* not enough variabes were assigned a value */;
break;
case EOF: /* error reading data */;
/* use ferror() and/or feof() and errno to determine cause of error */;
break;
default: /* no other cases are possible */;
break;
}

关于c - scanf 分隔符和空字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26397285/

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