【问题标题】:C - sscanf not ignoring white spaceC - sscanf 不忽略空格
【发布时间】:2016-07-09 10:53:14
【问题描述】:

我正在读取文本文件并使用逗号作为分隔符,下面的行确实有效,但是当我打印出 lname 时,它​​不会忽略逗号后的空格并在名称前打印一个空格。如何调整代码以忽略空格?

文本示例:

Rob, Smith, 4, 12, sometext
Steve, Jones, 41, 286, sometext

sscanf(line, "%[^,],%[^,],%d,%d,%s", fname,lname,&num1,&num2,info);

【问题讨论】:

  • 请注意sscanf(", ,", ", %[^,],", fname); 将停止扫描并且不会将任何内容保存到fname。 IOW,名称必须包含一些非空白。

标签: c file scanf


【解决方案1】:

如果您想忽略空格,只需添加一个空格字符:

sscanf(line, " %[^,], %[^,], %d, %d, %s", fname, lname, &num1, &num2, info);

%d%s 之前的空格不是必需的,因为它们已经跳过了前导空白字符。唯一不跳过前导空格的格式说明符是 %c%[%n

请注意,*scanf 格式字符串中的空白字符指示scanf 扫描任意数量的空白,包括一个空白,直到第一个非空白字符为止。

【讨论】:

  • 嘿酷哥,我想学习所有这些东西,但我找不到好的来源,你能指出这一切的好来源吗?
猜你喜欢
  • 1970-01-01
  • 2023-03-17
  • 2021-08-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-31
  • 2021-12-19
相关资源
最近更新 更多