[英]Terminate While Loop scanf(“%c”,&ch)
我想一次输入一个字符。 我不知道此输入的大小,因此我不是将数组指向输入,而是一次处理每个字符并构造一个链表。 我遇到的问题是,在读取完最后一个字符后,如何在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);
}
如果要读取所有字符,包括空格字符,请使用:
int c;
while ( (c = getchar()) != EOF )
{
// Use c as a char.
}
如果要跳过空格字符,请使用:
char c;
while ( scanf(" %c", &c) == 1 )
{
// Use c.
}
注意,在两种情况下,将int
vs char
用作c
的类型。
好的,我实际上知道了! 我想当scanf完成从输入的读取时,它返回一个整数<0,所以!= -1并不总是有效,因为它没有专门返回-1。
参考:本·格拉瑟在这篇文章上的答案: while循环中的scanf()不终止吗?
成功完成scanf函数后,它将为非零值(value> 0)。 如果出现任何问题,它将返回0.我认为在任何情况下都不会得到-1。因此,如果要终止循环,则可以提示用户输入一个特殊字符来表示结尾输入。或者,如果您正在从文件中读取它,则可以使用EOF终止循环。
希望您会喜欢该解决方案。
如果有人在我的答案中发现任何错误,请在下面进行评论。 我将非常感谢他。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.