Tag: scanf

在scanf中使用整数变量作为索引

我正在尝试在我的函数中执行以下操作但仍然遇到分段错误错误。 当我尝试使用[iModify – 1]作为我的索引时,它失败了。 你能不能将int变量计算用作C中的索引? int modify(pb *PhoneBook) { int x; int iModify = 0; char name_num[] = {‘\0’}; print(PhoneBook); printf(“\nWhich entry would you like to modify? “); scanf(“%d”, &iModify); printf(“\niModify – 1: %d\n”, iModify – 1); printf(“\nModify name or number? “); scanf(“%s”, name_num); convert_u(name_num); if (strcmp(name_num, “NAME”) == 0) { printf(“\nEnter new name: “); […]

输入无效输入时刷新scanf缓冲区的好方法

我一直在考虑如何刷新scanf函数中的错误条目,以允许循环提示完成它们的工作。 我在这里有一个函数调用来刷新输入。 这可行,但如果我在输入int时输入2q这样的东西,它仍然是错误的。 void flushKeyBoard() { int ch; //variable to read data into while((ch = getc(stdin)) != EOF && ch != ‘\n’); } 然后我会在另一个函数中有这样的东西: printf(“Enter a value: “); check = scanf(“%f”, &b); while(check == 0) { printf(“Invalid number entered. Please re-enter: “); check = scanf(“%f, &b”); flushKeyBoard(); } 还有更好的想法? 有人建议fflush(); 但在这里使用它并不是真正的标准..

feof()和fscanf()在将字节1b扫描为char后停止工作。 是因为它在ascii中是’ESC’吗? 我能做什么?

我正在编写一个处理PPM文件的程序(P6类型,而不是P3)问题是一些图像的字节为0x1b,根据ascii表称为’ESC’ 以下几乎是我的代码: //所有包括那里,,, … int main(void) { FILE *finput; int number[7]; char r, g, b; finput = fopen(“my.ppm”, “r”); /* The code where I read the P6 numRows numColumns 255\n …Lets assume that part works well */ while(!feof(finput)) { num[0] = fscanf(finput, “%c”, &r); // the “num[] = ” part is for debugging num[1] = […]

用scanf读取小int

有没有办法使用scanf读取一个小的int(即范围-128..127的1字节int)? 考虑以下代码: char x; scanf(“%d”, &x); 程序将读取一个int,最可能是4个字节,并尝试将其写入x的地址,从而违反了该地址后存储器中的3个字节。 我知道短整数( %h )有一个修饰符,但我还没有听说过一个小int( char )?

scanf在C中导致无限循环

我对C比较陌生,但我已经编程了几年了。 我正在为一个大学课写一个程序,我很困惑为什么没有调用下面的scanf函数,导致无限循环。 我已经尝试将我的scanf放在函数外部,调用它两次,一次从内部,一次从外面,以及其他几种方式。 我在网上看到fflush可能有所帮助,但事实并非如此 有什么建议? // store starting variables int players; // print title printf(“*————————————*\n”); printf(“| |\n”); printf(“| Wheel |\n”); printf(“| of |\n”); printf(“| Fortune |\n”); printf(“| |\n”); printf(“*————————————*\n”); printf(“\n\nHow many players are there?: “); while(scanf(“%d”, &players) != 1 && players >= 0) { printf(“That isn’t a valid number of players. Try again: “); fflush(stdin); […]

为什么你不能在C中写scanf(“%。2lf”,&a)?

我的朋友刚开始学习编程。 他向我展示了他的代码并询问为什么它会返回一些奇怪的数字。 看了之后,我看到他正在使用scanf(“%。2lf”,&a)来接受输入,并且习惯上,我尝试将其改为正常。 然后他问我为什么会有一些奇怪的输出。 谷歌搜索后我仍然没有找到答案。 谁能告诉我为什么它不起作用? 提前谢谢你,抱歉这个长篇无关紧要的故事以及我糟糕的英语。 编辑:下面添加了代码 int main() { double a,b,c,delta; printf(“Nhap vao 3 so thuc a,b,c: \n”); scanf(“%.2lf %.2lf %.2lf”,&a,&b,&c); if(a == 0 && b == 0 && c == 0) printf(“Phuong trinh co vo so nghiem”); else if(a == 0 && b == 0 && c != 0) printf(“Phuong trinh vo […]

Scanf for double在Dev C ++中不起作用

我遇到浮点数问题。 我觉得这里有些事情发生了冲突。 输出是: 我的代码: #include int main(){ double y; printf(“enter a decimal number: “); scanf(“%f”, &y); printf(“%f\n”, y); fflush(stdin); getchar(); return 0; } 我正在使用Dev C ++ 4.9.9.2,首先,如果以前没有读过,我必须多次刷回回车。 所以,如果有任何替代方案,那么告诉我。 其次输出是这个…

我遇到多个字符和scanf_s()的问题

我正在尝试使用scanf_s()来读取多个值,但每次运行程序时,我都会得到 实验室中0x592AD6AC(msvcr120d.dll)的未处理exception2.exe:0xC0000005:访问冲突写入位置0x00000000。 在弹出窗口中。 我该如何解决? float inTemp; char inUnit; char outUnit; printf(“Please enter the starting temperature with its units and the units\nyou would like to convert to (ie 74.5 FC): “); scanf_s(“%f %c %c”, &inTemp, &inUnit, &outUnit); //takes in all user input (NOT WORKING)

为什么用argv 调用sscanf()只能使用一次?

我需要将argv [1]和argv [2]变为不同的类型。 我发现我只能使用sscanf()一次,或者无法检索argv中的下一个字符串。 这是我的代码。 int main( int argc, char *argv[]) { char t; float temp; sscanf(argv[1], “-%[cf]”,&t); sscanf(argv[2], “%f”, &temp); return 0; } 只有第一个sscanf()才能获得格式化的值。 我怎么能完成argv [2]?

如果我输入的数字超过C中的数据类型范围会发生什么?

我制作了以下程序 #include int main() { // Testing Number unsigned int num; printf(“Enter The Number : “); scanf(“%u” , &num); // If I Enter 4294967298 printf(“Your Number is : %u” , num); // Output Comes Out To Be 2 } 现在在上面的程序中,如果输入4294967298输出结果为2 ,这里在stackoverflow上, 答案是说如果你输入的数字超过了所需的范围,那么scanf将存储UINT_MAX并打印出来,受到该答案的启发,并讨论它是错误的等等。 我尝试了自己,并且在进行模运算后,它在打印范围之后不会表现得像这样。 如果可以指出标准所说的内容,那将非常有帮助。 我已经阅读了另一个答案 ,这个问题的答案都是冲突的,没有人给出正确的答案,选定的答案在主题上有所不同。 它是依赖于实现的吗? 许多人似乎在这个问题上有所不同,如果你能参考标准支持你的论点,那将非常感激。 如果有人发现此问题有任何问题,请在评论中告诉我。