我试图在这里找到这个bug,但仍然没有得到它.我一直在调试和谷歌搜索并发现一些接近的主题,但只有解决方案,我不需要ATM,我很好奇为什么这个代码不起作用:
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#define BUFFER 256
int main()
{
int missionCode;
char *desc = (char*)malloc(sizeof(char)*BUFFER);
do {
printf("Please enter the mission code (or -1 for exit): ");
scanf("%d", &missionCode);
fflush(NULL);
if (missionCode==-1)
return 1;
} while (missionCode>10);
do {
printf("Please enter a string:\n");
scanf("%[^\n]s", desc); //it doesn't stop here!
fflush(NULL);
if (!strcmp("exit",desc))
return 1;
} while (strlen(desc)<20);
printf("your string:\n%s", desc);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
第二个循环中的scanf\flushall有问题,但我找不到什么.顺便说一句,这是C语言.
scanf("%d", &missionCode);
Run Code Online (Sandbox Code Playgroud)
将换行符留在缓冲区中,所以
scanf("%[^\n]s", desc);
Run Code Online (Sandbox Code Playgroud)
立即找到一个并停止.您可以添加空格
scanf(" %[^\n]s", desc);
Run Code Online (Sandbox Code Playgroud)
以跳过初始空格的格式.
| 归档时间: |
|
| 查看次数: |
2943 次 |
| 最近记录: |