[英]C sscanf(“%hhx”) read an unsigned int instead of unsigned char
[英]C - How to read with sscanf <int><string><int>?
我有一個帶有<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
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.