如何在c中输入多种数据类型

问题描述 投票:0回答:1

我正在尝试编写一个基于键盘输入进行计算的程序,例如 a b c,a 是数字 1,b 是数字 2,c 是运算符,但它不允许我在使用字符串时分配 b,它不显示 c当我使用 char 时,有人可以解释一下这是如何工作的,以及如何输入多种数据类型吗?我是 C 新手,我尝试过 C++,然后才更容易输入它们

#include <stdio.h>


int main() {
int a , b;
char c[1];
scanf("%i%i%s", &a, &b, &c); //type 2 3 +

printf("%i %i %s",a,b,c);

}

输出为 2 0 +

当我尝试使用 char 时 #包括

int main() {
int a , b;
char c;
scanf("%i%i%c", &a, &b, &c);

printf("%i %i %c",a,b,c);

}

输出是 2 3 它没有显示 c 也没有识别它

c string char scanf
1个回答
0
投票
  1. char [2]
    需要保存一个包含一个字符和终止符 ' ' 的字符串。

  2. 使用

    scanf()
    读取字符串时始终使用最大字段宽度。

  3. 格式字符串

    %s
    需要匹配的
    char *
    ,您只需将其写为
    c

  4. 成功时

    scanf()
    返回成功匹配的项目数。如果您不检查这一点,您可能正在对未初始化的变量进行操作。

#include <stdio.h>

int main(void) {
    int a;
    int b;
    char c[2];
    if(scanf("%i%i%1s", &a, &b, c) != 3) {
        printf("scanf failed\n");
        return 1;
    };
    printf("%i %i %s",a, b, c);
}

如果只输入两个数字,

scanf()
将会等待接线员。如果您不希望使用
fgets()
getline()
,则使用
sscanf()
来处理输入行。

运行示例:

$ ./a.out
1 x
scanf failed
$ ./a.out
1 2 +
1 2 +
© www.soinside.com 2019 - 2024. All rights reserved.