gpt4 book ai didi

C 编程 : How to read input byte at a time and output only integers as tokens?

转载 作者:行者123 更新时间:2023-12-04 05:44:16 25 4
gpt4 key购买 nike

我是 C 编程的新手,我必须编写一个程序,该程序仅从标准输入中提取整数并将它们作为标记输出。其他任何内容都应输出为“非法”。我是 不允许 使用任何数组或 malloc,我只能声明整数或长整数。我必须使用 getchar() 作为输入,使用 printf() 作为输出 没有别的。我的问题是,如何一次读取输入字节,将它们转换为 token 并检查它们是否为整数?

例如:如果输入是:

Hello 45 World Thank 67 you

它应该输出:
illegal
45
illegal
illegal
67
illegal

最佳答案

#include <stdio.h>
#include <ctype.h>
#include <limits.h>

int main() {
int ch;
int n;
int takeNum, sign;
long long int wk;//long long int as int64

wk=0LL;
takeNum = 0;//flag
sign = 1;//minus:-1, other:1
while(EOF!=(ch=getchar())){
if(ch == '-'){
sign = -1;
continue;
}
if(ch >= '0' && ch <= '9'){
if(takeNum >= 0)
takeNum = 1;
else
continue;
wk = wk * 10 + (ch - '0')*sign;
if(INT_MAX < wk || INT_MIN > wk){//overflow
takeNum = -1;//for skip
}
continue;
}
//space character continuing is "illegal"
if(ch == ' ' || ch == '\t' || ch == '\n'){
if(takeNum <= 0)
printf("illegal\n");
else
printf("%d\n", n=wk);
wk=0LL; takeNum=0; sign=1;//reset
}
}
return 0;
}

关于C 编程 : How to read input byte at a time and output only integers as tokens?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10889923/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com