c - 如何从 scanf 中识别字段分隔符?

标签 c scanf

我需要读取一个文本文件,其中的名称和数字如下所示。

rENLAg:12182
TgAlKd:19773
SSqUpz:16466
QYStPh:4113
CodNhz:28920
SgoIGz:25343

我需要将字母与数字分开。fscanf 仅识别空格,但不识别其他字段分隔符。那么我该怎么做呢?

最佳答案

一种解决方案是使用扫描集(请参阅 format specifiers table 中的 Conversion specifier [set] 条目):

char buf[7];
int i;
/* Check result of fscanf(), which returns the number
   of assignments made, to ensure both 'buf' and 'i'
   were assigned values. */
if (fscanf(fp, " %6[^:]:%d", buf, &i) == 2)
{
}

其中 "%6[^:]" 表示跳过任何前导空格(例如,之前读取的换行符)并读取到但不包括第一个 : 字符但不超过 6 个字符(以防止缓冲区溢出)。

关于c - 如何从 scanf 中识别字段分隔符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16037633/

相关文章:

c - 在文本文件中增加一个数字,语言 c

c - 在 C 中,如何计算 unsigned long 的模数?

c - 尝试为我的结构分配输入字符时,程序崩溃

c - 是 "01234|MY_NAME"= "%s|%s"吗?

c - 如果 scanf() 得到一些与格式字符串不匹配的字符会发生什么?

Java JNA -> C++ -> .NET 库必须在 System32 中

C 尝试检查无效输入

c - 如何用C语言替换txt文件中的单词?

c - 使用 Fscanf 解析特定的输入文件

c - 为什么 scanf 在这里跳过输入?