Can';t使用sscanf分离字符串?

Can';t使用sscanf分离字符串?,c,string,scanf,C,String,Scanf,我有一个相关编号的文本文件,即 12 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 yeilds之后输入printf: 1 2 2 但是在sscanf之后,变量's

我有一个相关编号的文本文件,即
12
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 yeilds之后输入printf:
1 2 2

但是在sscanf之后,变量's'和'e'是空的,而'd'是一些随机数,我甚至不知道它来自哪里。

我不确定我做错了什么,非常感谢您的帮助。

我们确实需要查看您的变量声明,但如果是d,您肯定应该传递地址:

sscanf(line, "%s %s %d", s, e, &d);
从您的评论来看,您似乎没有正确声明字符串。你想要的是:

char s[10], e[10];

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

我们确实需要查看您的变量声明,但对于d,您肯定应该传递地址:

sscanf(line, "%s %s %d", s, e, &d);
从您的评论来看,您似乎没有正确声明字符串。你想要的是:

char s[10], e[10];

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

好吧,很公平,这是一个愚蠢的错误。我尝试过将s和e声明为char s、char e或char s[],char e[],但这两种声明似乎都不起作用。@Trent char s[10],e[10]@特伦特:嗯,你需要发布更多的代码。请编辑你原来的问题,好吧,我想我现在已经把它整理好了,忘了加上d的地址。谢谢Neilok很公平,这是个愚蠢的错误。我尝试过将s和e声明为char s、char e或char s[],char e[],但这两种声明似乎都不起作用。@Trent char s[10],e[10]@特伦特:嗯,你需要发布更多的代码。请编辑你原来的问题,好吧,我想我现在已经把它整理好了,忘了加上d的地址。感谢您阅读以下内容:。这和所有其他条目。这将使你今后不用再就“分离特权”发表演讲。我不确定字典中对“分离”的定义如何帮助我编程?还要注意的是,我们都把separate拼错了。我没有把separate拼错,伙计。你也应该参加关于讽刺的课程。我试图阻止你一旦成为一名伟大的程序员,就变成一名白痴学者。仅供参考,现在大多数web浏览器都支持拼写检查。请阅读以下内容:。这和所有其他条目。这将使你今后不用再就“分离特权”发表演讲。我不确定字典中对“分离”的定义如何帮助我编程?还要注意的是,我们都把separate拼错了。我没有把separate拼错,伙计。你也应该参加关于讽刺的课程。我试图阻止你一旦成为一名伟大的程序员,就变成一名白痴学者。仅供参考,现在大多数web浏览器都支持拼写检查。