C-一个新变量中fgets的元素



我是C语言的初学者,我正在尝试读取终端(stdin(中用户的输入。我希望用户能够输入他想要的任意数量的数字或字符,直到他按下ENTER。

我想把第二个值存储在Int变量中。

例如,用户输入:45 34 RE 34

我正在尝试使用

fgets(input,1024,stdin)

这给了我一个存储在输入中的字符数组,但我需要第一个空格后面的数字,所以3和后面的数字4在一个新变量中。

我知道这看起来很容易,但我在做这件事时遇到了一些困难,有一个简单的代码可以做到吗?

非常感谢!

如果缓冲区中已经有名为"input"的数据,那么很容易按照您的描述进行解析:

#include <stdio.h>
#include <string.h>
int
main(void)
{
char input[] = "45 34 RE 34";
int three = 0;
int four = 0;
char *space;
space = strchr(input, ' ');
three = space[1] - '0';
four = space[2] - '0';
printf("%d:%dn", three, four);
return 0;
}

请注意,您可以使用scanf来获取值,但scanf对于初学者来说是一个糟糕的工具,您最好使用这样的解决方案来了解发生了什么。

如果不控制输入,则需要添加边界检查并确保strchr找到值。

我需要第一个空格后面的数字,所以3和后面的数字4在一个新变量中。。。。有一个简单的代码可以做到这一点吗?

使用sscanf()进行分析并使用宽度限制

int number1, number2;
//                  vvvvv        Scan non-space characters and discard 
//                          vvv  Scan 1 digit int 
if (sscanf(input, "%*[^ ]%1d%1d", &number1, &number2) == 2) {
printf("Success %d %dn, number1, number2);
}

一种更稳健的方法(当第一个字符是空间时,上述方法失败(。

char *space = strchr(input, ' ');
if (space && sscanf(space, "%1d%1d", &number1, &number2) == 2) {
printf("Success %d %dn, number1, number2);
}

相关内容

  • 没有找到相关文章

最新更新