我有一项任务是使用两种方法从用户那里获取输入。
我想给用户chioce。如果他想要方法1,请按1.否则,按0。
之后用户开始输入我必须打印的字符串。我打印输入,直到用户按下输入按钮或EOF。
问题是,当用户给我“选择”时,他按下输入按钮('\ n'),这样我的程序就存在了。
我该如何解决这个问题?
printf("please enter your chioce: for malloc press 1. for linked list press 0\n");
scanf("%d",&n);
if (n)
printWithMalloc();
else{
.....
为了清楚,我的输入是
printf("please enter a string. the string will be printed right away.\n");
while ((c=getchar())!=EOF && c!='\n')
答案 0 :(得分:1)
忘记scanf()
。
如果我理解你的问题,你想在用户输入空行时退出。如果是这样,只需读取整行,并检查它是否为空(除了尾随换行符)字符):
while (1) {
char buf[LINE_MAX];
if (!fgets(buf, sizeof buf, stdin))
break; // EOF
if (buf[0] == '\n')
break; // empty line
// if we got here, the user entered something; try converting it to an int
int choice = strtol(buf, NULL, 0);
// and do stuff with it
}