Tag: 输入

非数字输入导致无限循环

出于某种原因,如果用户输入了错误的数据类型,例如’j’或’%’,循环将停止询问输入,并将一遍又一遍地显示”Enter an integer >” 。 如何让程序处理错误输入? 为什么输入非数值会导致这种奇怪的行为呢? #define SENTINEL 0; int main(void) { int sum = 0; /* The sum of numbers already read */ int current; /* The number just read */ do { printf(“\nEnter an integer > “); scanf(“%d”, &current); if (current > SENTINEL) sum = sum + current; } while (current > […]

如何从C中的fgets中删除多余的字符输入?

我听说使用gets()在C编程中很糟糕,并且使用fgets更安全……所以我使用的是fgets。 但是,我遇到了fgets的问题:我输入了太多字符,不知怎的,它溢出了。 如何摆脱额外的输入字符? char answer[4]; char answer2[4]; fgets(answer,sizeof(answer),stdin); printf(“answer: %s\n”,answer); fgets(answer2,sizeof(answer2),stdin); printf(“answer2: %s\n”,answer2); 例如,对于第一个fgets,我输入123456,我得到的输出是 answer: 123 answer2: 456 如何删除456进入下一个fgets输入? 在为第一个fgets输入123456之后,我想要这样的输出: answer: 123 然后,用户继续输入下一个fgets的输入…

如何在C中用用户输入来创建字符串函数?

我知道如何使用int,double,float和内部用户输入来创建函数(我当前正在使用scanf)。 int getData(){ int a; scanf(“%i”,&a); return a; } 但如何使用字符串类型和用户输入内部函数,然后我们返回类型字符串的值?

如何获取空输入或仅在C中输入

嗨,我对这个简单的C代码有困难,因为我对它很新。 当我尝试从中获取空值或获取用户只是按Enter键而不键入任何内容。 尝试了一些变化,仍然没有工作 这段代码如下: char user_input[17] = {‘\0’}; printf(“Type something: “); prompt = scanf(“%s”, user_input); if (prompt <= 0) { printf("You didn't type anythingt!\n"); return 1; } 也: char user_input[17] = {‘\0’}; printf(“Type something: “); scanf(“%s”, user_input); if (user_input[0] == ‘\0’) { printf(“You didn’t type anything!\n”); return 1; } 在这个论坛上有很多变化,它们都没有为我工作……我错过了什么?

C – 直接从键盘缓冲区读取

这是C编程语言中的一个问题。 如何直接读取键盘缓冲区中的数据? 我想直接访问数据并将其存储在变量中。 变量应该是什么数据类型? 我需要它用于我们研究所正在开发的操作系统。 它被称为ICS-OS,我不太清楚具体细节。 它运行在x86,32位机器上(我们在Linux机器上的QEMU上运行它)。 以下是Google Code http://code.google.com/p/ics-os/的链接。 我希望这些信息足够充分。 操作系统不支持conio.h库,因此kbhit不是一个选项。

如何使用fgets读取未知长度的输入

我怎么应该使用fgets()读取长输入,我不太明白。 我写了这个 #include #include #include int main() { char buffer[10]; char *input; while (fgets(buffer,10,stdin)){ input = malloc(strlen(buffer)*sizeof(char)); strcpy(input,buffer); } printf(“%s [%d]”,input, (int)strlen(input)); free(input); return 0; }

如何区分左右键(CTRL和ALT)?

我开始利用Win32的原始输入function来检测键盘上的所有键。 到目前为止,一切都很好! 我可以区分顶行的数字和右侧键盘的数字。 我甚至可以在左右键之间进行检测。 但是,control和alt键不会返回唯一的扫描码。 控制键返回29,并且alt键返回56。 检查这些键上的键状态的流行方法是GetAsyncKeyState 。 我已经使用VK_LCONTROL和VK_RCONTROL测试了该function,但它可以工作,但这只能帮助我捕获按键事件。 我真的希望能够捕获关键事件。 很明显,API在某种程度上意识到正在按下哪个键; 我如何获得这些信息? 我目前正在从RAWKEYBOARD结构的MakeCode字段中提取扫描代码。 这给了我关于除CTRL和ALT之外的每个键(及其左/右对齐)的信息。 我将如何捕获关键事件(并知道它是左/右)? 是否可以只使用RAWKEYBOARD结构? 或者我是否需要制定某种解决方法?

如何读取二进制数作为输入?

有没有办法让用户在C或C ++中输入二进制数? 如果我们写类似的东西 int a = 0b1010; std::cout << a << std::endl 然后输出结果为10(使用适当的编译器扩展时)。 但是当我们试着写的时候 int n; std::cin >> n; int t = 0bn; 它给了我们一个错误,所以任何人都可以建议我们如何直接读取二进制数作为输入而不是使用字符串来存储输入?

获取char输入并将其存储在数组中

我想取n个输入并将其保存在数组c []和p []中,然后使用它们…… 我目前写的这个,但我没有得到理想的输出 #include #include int main() { int n,t,i,j,size=0; char s[100000]; char c[100]; char p[100]; scanf(“%d”, &n); for(i=0;i<n;i++) { scanf("%c", &c[i]); scanf("%c", &p[i]); } for(i=0; i<n;i++) { printf("%c %c", c[i],p[i]); } return 0; }

在c中读取()stdin?

我有一个涉及read()命令的快速小问题。 我在C中真的很生气,不幸的是,我现在的作业让我用C语言编程。我们需要使用read()而不是fgets等来读取stdin。 所以我有一个简单的while循环: int n, i; char buffer[257], *input; while((n=read(fileno(stdin), buffer, 256)) > 0) { buffer[n] =’\0′; if(buffer[n] = ‘\n’) break; write(input, buffer, strlen(buffer)); } 因此我不确定如何在按下输入(行尾)时使这个循环停止,这就是为什么我有中断代码,虽然我不知道这是否正确完成。 我想要完成的整个目标是将stdin的输入放入指针’input’ (我真的很难理解指针,所以请耐心:)) 我的问题是当我按Enter键时出现分段错误。 我希望我可以使用fgets,因为这一切都可以通过一个简单的解决 input = fgets(buffer, 256, stdin); 做作业:(不管怎样,如果你们中的任何一个人能指出我正确的方向,我会非常感激。谢谢!