gpt4 book ai didi

c - 在 C 中的循环中读取字符串时从 sscanf 获取偏移量

转载 作者:太空宇宙 更新时间:2023-11-04 00:56:46 25 4
gpt4 key购买 nike

我正在尝试在循环中使用 sscanf() 读取字符串,但偏移量为零。什么是正确的方法,是否有可能跟踪偏移量?

在此处的示例中,offset 应为 5,但实际值为 0,我必须手动将其设置为 5。

char line[35]=" -123    1  -25-1245  -12";
char *data=line;
char buf[6];
int offset;
int n,i;

for(i=0;i<5;i++){
if(sscanf(data,"%5[^\n\t]s%n",buf,&offset)==1){
n=atoi(buf);
data+=5;//offset;
printf("n= %5d offset= %d\n",n, offset);
}
}

结果是:

n=  -123  offset= 0
n= 1 offset= 0
n= -25 offset= 0
n= -1245 offset= 0
n= -12 offset= 0

最佳答案

问题是 sscanf() 中的“扫描集”%[…] et al 是完整的转换规范,不是 %s 的修饰符。您的数据中没有 s 字符,因此 sscanf() 无法匹配格式字符串中的文字 s,因此无法匹配失败设置offset

使用更多的空格和更少的:

char line[35] = " -123    1  -25-1245  -12";
char *data = line;
char buf[6];
int offset;
int n, i;

for (i = 0; i < 5; i++)
{
if (sscanf(data, "%5[^\n\t]%n", buf, &offset) == 1)
{
n = atoi(buf);
data += offset;
printf("n = %5d; offset = %d\n", n, offset);
}
}

您的问题已经表明您了解 How to use sscanf() in loops? 中讨论的大部分内容

关于c - 在 C 中的循环中读取字符串时从 sscanf 获取偏移量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57789999/

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