簡體   English   中英

C-如何用sscanf閱讀 <int><string><int> ?

[英]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=10b= "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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM