【发布时间】:2014-06-14 15:12:59
【问题描述】:
我想用getchar() 从命令行读取数字,用isspace() 删除所有空格并用putchar() 打印它们。
但是,以下代码不会删除任何空格。输入10 1 导致输出10 1。
你能帮我找出我的错误吗?谢谢!
int main(void){
char input[UINT_MAX];
int i = 0;
while ( i < UINT_MAX && (input[i] = getchar()) != '\n' && !isspace(input[i])){
i++;
}
if ( i == UINT_MAX ) {
printf("Too long");
}
else {
input[i] = '\0';
}
i = 0;
while( input[i] ) {
putchar(input[i]);
i++;
}
return 0;
}
请注意,我不允许使用任何额外的标题。我仅限于上述功能。
【问题讨论】:
-
许多系统无法处理超过 1 MB 的堆栈大小,因此必须避免使用
char input[UINT_MAX];(假设unsigned int是 32 位)。 -
您的代码按预期为我打印
10(当我修复缓冲区大小时):ideone.com/CSSTEv
标签: c