【发布时间】:2016-02-24 14:38:44
【问题描述】:
我有一个带有<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 读取<> 之间的字符串对吗?
感谢您的回答。
【问题讨论】:
-
另一个建议是使用
fscanfinstad ofsscanf,因为您已经打开了一个文件。您可能想fdopen它来检索FILE指针并使用fscanf来读取。或者先使用getline阅读整行,然后调用sscanf。