【发布时间】:2016-02-10 22:59:56
【问题描述】:
我想一次读入一个字符。我不知道这个输入会有多大,所以我没有将数组指向输入,而是一次处理每个字符并构造一个链表。我遇到的问题是,在读取最后一个字符后如何终止这个 while 循环?
struct node{
struct node *next;
int data;
};
int main(){
int i; //iterator
char ch;
//char *numberArr = (char*)malloc(1024,sizeof(char*));
struct node* head = NULL;
struct node* curr = NULL;
struct node* tail = NULL;
printf("Please input a number: ");
while (((scanf(" %c",&ch)) != -1)){
printf("%c",ch);
}
【问题讨论】:
-
while (((scanf(" %c",&ch)) == 1)- 你有什么问题?无论如何,与-1比较是错误的!阅读函数的手册页。 -
你在“最后一个”字符之后输入什么?您是否等待,按
或某些键导致文件结束? -
好吧,我想做的是 scanf(" %c",&c) 并且输入将是一个非常大的数字输入,所以 3143143124132543125,一旦最后 5 被读入我'想取消while循环。因为一旦字符被读入,它就会在while循环中挂起。
-
@user3260745 程序如何知道这是最后 5 个?如果你在那之后继续输入 638961 怎么办?
标签: c while-loop scanf