Tag: 输入

格式字符串中的空格(scanf)

请考虑以下代码: #include int main() { int i=3, j=4; scanf(“%dc %d”,&i,&j); printf(“%d %d”,i,j); return 0; } 如果我必须更改变量的值,我可以将2c3或2 c 3或2c 3作为输入。 如果我希望用户输入我想要的相同模式,我该怎么办意味着如果%dc%d然后只有2c3是可接受的而不是2 c 3 ,反之亦然如果它是%dc %d ?

如何在C中监听用户输入时运行程序?

我正在尝试制作一个继续运行的游戏,直到按下一个键,然后它应该接受该键并对其执行某些操作然后按照正常情况继续运行。 我该怎么做呢? 我在MAC上,所以尽管我遇到了一个名为conio.h的windows库,它可以使用kbhit()和getch()来处理这个问题,我无法让它为我工作…… // // main.c // conioTesting // // #include #include “myconio_mac.h” int main(int argc, const char * argv[]) { int counter = 0; while (counter < 2) { if (kbhit()) { char key = getch(); printf("\n Key is %c \n", key); printf("Keyboard hit detected \n"); } else { printf("Nothing. \n"); } } printf("Passed!!!!!!!!!! […]

用stdin识别箭头键

是否可以采用跨平台方式处理C或OCaml程序中的退格键和箭头键? 实际上,OCaml解决方案将受到赞赏,但许多标准的unix函数直接包装到相应的API调用中,因此移植C解决方案应该没有问题。 我要实现的是捕获箭头键以覆盖它在shell中的行为(通过重新定位最后一行或类似这样的操作)。 我认为这件事落在实际程序之前并且它不是由代码本身处理的,所以我不知道它是否可能。 该程序在Linux,OS X和Windows(在cygwin上)编译,所以我想在所有平台上进行编译。

OSX上的键盘输入

我想知道是否有可能从某个地方读取OSx上的键盘输入,例如带有/ dev / input文件的GNU / Linux。 这样做的目的是制作一个非常简单的键盘记录器,(学习目的),或者如果有一个我可以在C中调用的function。 谢谢。

将CSV文件中的值读入变量

我正在尝试编写一段简单的代码来读取CSV文件中的值,最多包含100个条目到一个结构数组中。 CSV文件的一行示例: 1,先生,詹姆斯,奎格利,主任,200000,0 我使用以下代码读取值,但是当我打印出值时,它们是不正确的 for(i = 0; i < 3; i++) /*just assuming number of entries here to demonstrate problem*/ { fscanf(f, "%d,%s,%s,%s,%s,%d,%d", &inArray[i].ID, inArray[i].salutation, inArray[i].firstName, inArray[i].surName, inArray[i].position, &inArray[i].sal, &inArray[i].deleted); } 然后当我打印出第一个名字时,这些值都被分配给第一个名字: for(j = 0; j < 3; j++) /* test by printing values*/ { printf("Employee name is %s\n", inArray[j].firstName); } 以这种方式给出ames,Quigley,Director,200000,0等等。 我确定这是我如何格式化fscanf线但我不能让它工作。 这是我正在阅读的结构: typedef […]

为什么不按回车键’\ n’到getch()?

#include #include main() { char ch,name[20]; int i=0; clrscr(); printf(“Enter a string:”); while((ch=getch())!=’\n’) { name[i]=ch; i++; } name[i] = ‘\0′; printf(“%s”,name); } 当我输入“abc”作为输入时,如果按下输入则不起作用。 任何人都可以让我知道为什么条件ch = getch()!=’\ n’在按下回车时没有变为假? 我还观察到ch正在使用\ r而不是\ n。 请告诉我。 谢谢

使用atoi()输入Integer的validation

#include “stdafx.h” #include void main() { char buffer[20]; int num; printf(“Please enter a number\n”); fgets(buffer, 20, stdin); num = atoi(buffer); if(num == ‘\0’) { printf(“Error Message!”); } else { printf(“\n\nThe number entered is %d”, num); } getchar(); } 上面的代码接受一个字符串forms的数字,并使用atoi将其转换为整数。 如果用户输入十进制数,则只接受小数点前的位。 此外,如果用户输入字母,则返回0。 现在,我有两个问题: i)我希望程序检测用户是否输入了带小数点的数字并输出错误信息。 我不希望它在小数点之前取得部分。 我希望它能够识别输入无效。 ii)如果atoi返回0以防有字母,我怎么validation它,因为用户也可以输入数字0? 谢谢。

在C中将文本文件读入缓冲区的正确方法?

我正在处理我希望在处理它们时读入缓冲区的小文本文件,所以我想出了以下代码: … char source[1000000]; FILE *fp = fopen(“TheFile.txt”, “r”); if(fp != NULL) { while((symbol = getc(fp)) != EOF) { strcat(source, &symbol); } fclose(fp); } … 这是将文件内容放入缓冲区还是滥用strcat()的正确方法? 然后我遍历缓冲区: for(int x = 0; (c = source[x]) != ‘\0’; x++) { //Process chars }

C中的缓冲和非缓冲输入

有没有办法弄清楚input是buffered还是非unbuffered (除了手册页。)? 我们不能通过查看函数的名称来弄清楚吗? 也适用于echoing和非nonechoing…有关快速参考,哪里可以找到具有Buffered , Unbuffered , echoing和非nonechoing输入详细信息的列表?

C命令行密码输入

我想允许用户使用命令行界面输入密码。 但我不想在屏幕上显示此密码(或显示“****”)。 怎么用C做? 谢谢。 更新: 我只在Linux上工作。 所以我实际上并不关心Win或其他系统。 我试过卢卡斯的解决方案,它工作得很好。 但是,我还有另一个问题: 如果这是单个进程和单线程应用程序,更改termios的设置会影响不同的终端吗? 1个进程怎么样 – multithreading,多进程 – multithreading? 非常感谢。