Tag: 输入

如何在Windows上无阻塞地读取可用输入

在Linux上,我可以在不阻止进程的情况下读取可用输入: fcntl(STDIN_FILENO, F_SETFL, fcntl(STDIN_FILENO, F_GETFL, 0) | O_NONBLOCK ) char buf[n]; int r = fread(buf, 1, n, stdin); if (r == 0){ printf(“nothing\n”); } else { printf(“read: “); fwrite(buf, 1, r, stdout); printf(“\n”); } 输入源可以是任何东西,例如文件,终端或管道。 我怎么能在Windows XP上做到这一点? 谢谢。

SDL_GetKeyboardState无法正常工作

我正在尝试为SDL 2的游戏制作一个控制器(不想在gamedev上询问,因为它不是直接的游戏问题)我使用SDL_GetKeyboardEvent来查看导航箭头是否被按下但是它显然不起作用,如果按下其中一个键,它应该打印一个值1或-1但它不会打印0即使我按住键几秒钟,它就像它没有检测到键被压了。 我搜索了整个互联网,这就是他们如何做到的,但它对我不起作用。 #define SDL_MAIN_HANDLED #include #include “SDL.h” /* I’ll add some code later so something that isn’t used might be initialized */ int main (void) { int a = 1; int x; int z; SDL_Event quit; const Uint8 *keys = SDL_GetKeyboardState(NULL); SDL_Init(SDL_INIT_VIDEO); while(a) { SDL_PollEvent(&quit); if(quit.type == SDL_QUIT) a = 0; if(keys[SDL_SCANCODE_UP]) z = […]

在C中反转字符串不会输出反转的行

我正在尝试反转C中的字符串。反向函数只是将给定位置(在for循环中)的字符分配给临时对象。 我在程序中看不到任何逻辑错误,并且使用以下命令在gcc 4.7.2下成功编译程序: gcc -Wall -std=c99 reverse.c 要重新创建问题: 1.)运行程序并在shell中输入一个字符串 2.)完成输入后,按enter /和/或您的EOF信号。 问题是既没有打印原始字符串,也没有反转字符串。 这也是K&R第二版的练习,如果你完成了这个练习,我将不胜感激我的另一个解决方案。 我认为该错误是由缺少空字符引起的,着名的printf需要一个以空字符结尾的字符串来打印输入到cin。 getline函数将一个空字符分配给数组的末尾,当然空字符将是字符串中结束printf的第一个字符(因此不会打印字符/文字)。 #include #define MAXLINE 1000 int geline(char s[], int lim); void reverse(char line[], int length); int main() { char s[MAXLINE]; char t[MAXLINE]; int k, len; while ((len = getline(s, MAXLINE)) > 0) { if (len > 1) reverse(s, len); } printf(“%s”, […]

如何在C中读取不同数量的整数输入?

我将获得三行输入。 第一行将给出2个整数,第三行将给出1个整数。 但第二行可以给我任意数量的整数,范围在1到100之间。例如,输入可以是: 2 1 5 6 1 9 2 10 或者可能是: 10 4 5 6 9 我可以将整数输入的第二行读入整数数组中以获得固定数量的整数,但不能对不同数量的整数执行此操作。 我想,在这种情况下,我应该使用while循环,当scanf()找到换行符时,它会中断。 我该如何编码呢?

如何使我的输出仅显示我的检查生成器程序所需的内容

我已经制作了一个程序,可以输出输入的任何数字,但它会将其转换为单词而不仅仅是数字,例如,如果你输入“1234.56”,它将把它转换为“一千二百三十四美元和… .56分“。 分数应始终为数字。 到目前为止,一切都很好,但如果我投入的金额少于一千,我会在那里得到诸如“千”或“百”等多余的词。 例如,如果我输入“15.77”,我的输出将是“千美元十五美元和…… 77美分”。 我不希望千人或者百人在那里,没有那些将是完美的! 代码如下: #include void printNum(int); void printNum2(int); void printNum3(int); int main() { int a = 0; int b = 0; int c = 0; int d = 0; int num = 0; int printcents; //To convert the float “cents” to an integer. float inclusive; float cents; printf(“Welcome to the […]

如何读取输出并从c程序输入程序?

这是参考以下问题: 从C程序中执行程序 如何在Windows上使用Tiny C编译器执行相同的操作? 我需要执行一个.exe来自c程序,并通过使用文件或字符串作为源从同一个C程序中输入它,并将其输出读取到字符串或文件中。我一直在使用system()frunction。 任何建议或例子都是受欢迎的。谢谢

无法读取C中的EOF字符

我在读取C中最后一个输入的EOF字符时遇到问题 j=0; while(*(name2+j)!=’\n’){ if(*(name2+j) == ‘ ‘){ j++; continue; } d[tolower(*(name2+j))]++; j++; } 对于最后一个输入,没有换行符号,对于非常小的字符串,j的值被设置为非常大的数字。 所以,考虑到文件的结尾,我修改了while条件 while(*(name2+j)!=’\n’ && (*(name2+j))!=EOF) 但我仍然遇到同样的问题。 有人能说出我在这里遗失了什么吗? 谢谢。

C ++顺序读取多个输入文件

我有47个不同的文件: 001_template.dat … 047_template.dat 在名为/ data的目录中。 我需要将每个模板文件与三个不同的查询文件进行比较,也可以在目录中进行比较。 这些被命名为: 001_AU01_query.dat 001_AU12_query.dat 001_AU17_query.dat。 我知道如何让所有这些运行,但我将不得不将这6行代码剪切并粘贴46次,程序将变得非常长且令人困惑。 是否有一种循环这些文件的好方法? 可能通过循环模板文件,然后对每个模板进行三次查询? 我显然有一个相似性函数和一个已定义的排序函数,以及inputFile 。 这是我想要转换的代码:(不是作业,这是我一直在做的面部表情识别项目) int main() { vector temp01; vector temp12; vector temp17; temp01 = similar(inputFile(“data/001_AU01_query.dat”), inputFile(“data/001_template.dat”)); sortAndOutput(temp01); temp12 = similar(inputFile(“data/001_AU12_query.dat”), inputFile(“data/001_template.dat”)); sortAndOutput(temp12); temp17 = similar(inputFile(“data/001_AU17_query.dat”), inputFile(“data/001_template.dat”)); sortAndOutput(temp17); }

查看输入缓冲区,并刷新C中的额外字符

如果我想在C中接收一个字符输入,我将如何检查是否发送了额外的字符,如果是,我将如何清除它? 是否有一个像getc(stdin)一样的函数,但它不会提示用户输入一个字符,所以我可以把while(getc(stdin)!=EOF); ? 或者是一个查看缓冲区中下一个字符的函数,如果它没有返回NULL(或者其他任何东西),我可以调用一个(nother)函数来刷新stdin? 编辑 所以现在,scanf似乎正在做的伎俩,但有没有办法让它读取整个字符串,直到换行? 而不是最近的空白? 我知道我可以将“%s%s%s”或其他任何内容添加到格式字符串中但是我可以处理任意数量的空格吗?

使用char和scanf“%hhu”时输入值无效

所以这就是代码 void main() { unsigned char n,t; scanf(“%hhu %hhu”,&n,&t); printf(“%hhu %hhu”,n,t); } 问题是当我分别输入5和1时,输出为0和1. 0表示n ,1表示t 。 但是,当我将类型从char更改为int / unsigned时,输出是正确的:5和1。 问题是为什么用char输入(数字)输入会给出无效值?