c - 从标准输入读取各种输入



我正在阅读标准。用户被提升为吃一个数字或三个数字。这个问题哪些功能好?

我试过了

    int in[3] = {-1, -1, -1};
    scanf("%d %d %d", &in[0], &in[1], &in[2]);
    printf("%d, %d, %dn", in[0], in[1], in[2]);

这适用于三位数字,但如果只键入一位数字,则不适用。

例如,我想让输入为"17"或"0 1 9"然后输出应该是例如

int amount = 1
int digits[3] = {17, -1, -1}

int amount = 3
int digits[3] = {0, 1, 9}

你接近你想要的,但你读的是 int 而不是字符串,所以

 char *in[3] = {-1, -1, -1};

必须是

int in[3] = {-1, -1, -1};

还允许将 -1 作为有效的初始值。

这适用于三位数字,但如果只键入一位数字,则不适用。

scanf("%d %d %d", &in[0], &in[1], &in[2]);完成你需要输入 3 个有效的 int 或在 erro ro 上完成 达到 EOF 或给出无效的输入,只能输入一个值做一个 fgets 然后_a __sscanf_

例如,

我希望输入为"17"或"0 1 9",然后输出应该是例如

int amount = 1
int digits[3] = {17, -1, -1}

int amount = 3
int digits[3] = {0, 1, 9}

例如做

#include <stdio.h>
int main(void)
{
  char line[32];
  if (fgets(line, sizeof(line), stdin) == line) {
    int ints[3] = { -1, -1, -1 };
    int amount = sscanf(line, "%d %d %d", &ints[0], &ints[1], &ints[2]);
    printf("%d : { %d %d %d }n", amount, ints[0], ints[1], ints[2]);
  }
  return 0;
}

编译和执行

pi@raspberrypi:/tmp $ gcc -pedantic -Wall -Wextra c.c
pi@raspberrypi:/tmp $ ./a.out
pi@raspberrypi:/tmp $ ./a.out
17
1 : { 17 -1 -1 }
pi@raspberrypi:/tmp $ ./a.out
0 1 9
3 : { 0 1 9 }
pi@raspberrypi:/tmp $ ./a.out
1 a
1 : { 1 -1 -1 }
pi@raspberrypi:/tmp $ ./a.out
a
0 : { -1 -1 -1 }
pi@raspberrypi:/tmp $ 
pi@raspberrypi:/tmp $ ./a.out
-1 : { -1 -1 -1 }
pi@raspberrypi:/tmp $ 

(在最后一种情况下是空行,例如只需输入(

我将数字重命名为整数,因为数字假设每个条目都是一个数字(例如"0"(,而你想要整数

相关内容

  • 没有找到相关文章

最新更新