【问题标题】:Can't separate string using sscanf?无法使用 sscanf 分隔字符串?
【发布时间】:2010-03-24 12:49:23
【问题描述】:

我有一个相关数字的文本文件,即;
1 2 2
3 2 1
3 4 3

每一行都是一条单独的信息,因此我试图一次读取一行,然后将其分成 3 个数字,但 sscanf 并没有按照我的预期进行。

char s[5];
char e[5];
char line[100];
int d;

fgets(line, sizeof(line), inFile);
sscanf(line, "%s %s %d", s, e, d);

在 fgets yields 之后放入 printf:
1 2 2

但是在 sscanf 之后,变量 's' 和 'e' 为空,而 'd' 是一些我什至无法弄清楚它来自哪里的随机数。
不知道我做错了什么,任何帮助将不胜感激。

【问题讨论】:

  • 阅读:merriam-webster.com/dictionary/seperate。这和所有其他条目。以后不用再发表“特权分离”的言论了。
  • 我不确定字典中对“分离”的定义将如何帮助我进行编程?另请注意,我们都拼错了。
  • 我没有拼错separate,伙计。您还应该参加讽刺课程。一旦你成为一个伟大的程序员,我试图阻止你看起来像一个白痴学者。仅供参考,现在大多数网络浏览器都支持拼写检查。

标签: c string scanf


【解决方案1】:

我们确实需要查看您的变量声明,但在 d 的情况下,您绝对应该传递地址:

sscanf(line, "%s %s %d", s, e, &d);

从您的评论来看,您似乎没有正确声明字符串。你想要这样的东西:

char s[10], e[10];

取决于您期望的字符串有多大。但是你必须指定一个大小。 line 变量应以类似方式声明。

【讨论】:

  • 好吧,这是一个愚蠢的错误。我尝试将 s 和 e 声明为 char s、char e 或 char s[]、char e[],似乎都没有成功。
  • @Trent char s[10], e[10];
  • @Trent 好吧,您需要发布更多代码。请通过编辑您的原始问题来做到这一点。
  • 好吧,我想我现在已经整理好了,忘记添加d的地址了。谢谢尼尔
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-20
  • 1970-01-01
  • 2015-07-12
相关资源
最近更新 更多