gpt4 book ai didi

C - 如何使用 sscanf 进行读取?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:48:56 26 4
gpt4 key购买 nike

我有一个 <int><string><int> 的文件然后我将它保存到缓冲区中,然后使用管道读取它。该字符串是字母数字。

FILE *est = fopen ("file.txt","r");
fgets( buffer1, 256, est);
write(fd[i][1], buffer1, BUFFERSIZE);

.
.
.

int r = read(fd[i][0], buffer1, BUFFERSIZE);
sscanf(buffer1,"<%d><%s><%d>", &a, b, &c);

问题是当我读取它“吃掉”><%d> 的字符串时并将所有内容解释为字符串。例如,如果我有 <10><5jj8j><10>变量将是 a=10 , b= "5jj8j"><10>c无论它被初始化。

如何使用 sscanf读取 <> 之间的字符串对吧?

感谢您的回答。

最佳答案

由于 "%s" 保存了所有非空白字符并且 OP 不希望将 '>' 保存为字符串的一部分,因此使用 “%[]”

使用 "%n" 检测扫描是否完成为 n,在最后,只有当 所有 格式匹配时才会改变.

// sscanf(buffer1,"<%d><%s><%d>", &a, b, &c);
int n = 0;
char b[100];
sscanf(buffer1,"<%d><%99[^>]><%d>%n", &a, b, &c, &n);
if (n > 0) {
; // Scan completed - success;
} else {
; // Scan failed
}

关于C - 如何使用 sscanf <int><string><int> 进行读取?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33854964/

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