【发布时间】:2021-12-31 11:38:06
【问题描述】:
我正在开发一个程序,它接收一个 32 位数字并将其输入到一个数组中,然后将其转换为一个 int 数组。但是,这个 32 位数字在某些区域之间包含空格,例如,数字:11000010111110100000000000000000 可以输入为 1 10000101 11110100000000000000000。
当使用后者时,程序将无法运行。有没有办法让 C 忽略空格?
这是我的代码:
int arr[32];
char number[33] = {};
printf("Enter \n");
scanf("%32s", number); // This will scan max 32 characters
for (int i = 0; i < 32; i++)
{
{
arr[i] = number[i] - '0';
}
}
【问题讨论】:
-
不要指望
scanf是一个好的解决方案。这是一个用途有限的功能。使用fgets读取一行并解析它。 -
我不知道操纵
scanf来做到这一点,但我会采取的方法是扩展数组,阅读整行,自己删除空格,然后使用类似strtoll. -
或逐个字符地读取输入的字符并决定是否要使用每个字符。类似
char c; while(scanf("%c", &c) == 1) if (isdigit(c)) { /* do something */}。 -
顺便说一句,我怀疑
scanf("%34s", number); // This will scan max 32 characters中的评论。 -
您希望通过 scanf-magic 实现这一点还是愿意更改您的其余代码?