Tag: 输入

如何计算C中矩阵行中的元素数量

使用整数数组,Id喜欢首先向用户询问他想要在数组中的行数和列数(让我们称之为x和y)(我知道如何执行此步骤)。 重要的是,当用户输入将存储在矩阵中的值时,将从一行输入读入一行,从第二行输入读入第二行,依此类推。 所以一行输入= 1行。 因此,如果他已经定义了x个列,他应该为第一行输入x个数字,所有这些都在一行上。 如何检查x号码是否确实已输入线路? 如果输入的内容越来越少,我将打印错误消息。 是否有某种命令可以检查1行的大小,以便它可以根据用户定义的x进行检查? 到目前为止我编写的代码涉及简单的步骤,但我对如何实现此检查几乎没有任何想法,以确认用户输入的数量与他最初定义的输入量相同。 非常感谢!

输入使用不起作用,但使用scanf

#include void main(){ char str[100]; char letter; letter=getchar(); printf(“%c”,letter); gets(str); //Rest of code } 执行时,代码跳过gets(str)行。 但是当我用scanf替换gets时,它可以工作。 任何具体的原因,为什么不起作用? 我正在使用gcc 4.7.2。

C中的输入validation

我正在用C编写程序。在程序中,用户必须选择一个数字,1,2或3.我想构造代码,以便当用户输入的数字不是1时, 2或3,他/她将被告知“无效选择 – 再次选择”然后他们将被带回到程序的开头: int main() { int choice; char response, Y, N; printf(“Choose a shape from the following:\n 1.Sphere\n 2.Cone\n 3.Cylinder\n”); scanf(“%d”,&choice); if(choice==1||choice==2||choice==3) { printf(“Enter the radius, r\n”); } else printf(“Invalid selection, choose again.\n”); } 我想要的是,在“无效选择,再次选择”出现后,用户返回到程序的开头,这样他们就可以再次输入他们的选择。 我该怎么办?

无需按下即可获得单个字符

我试图从用户那里获得单个字符输入而无需用户输入。 我试过这个: #include int main() { int input; for (;;) { input = getchar(); printf(“%d\n”, input); } } 但是,用户不仅需要按Enter键,还会注册两个按键(输入字符和换行符),即: $ ./tests a 97 10 c 99 10 由于我总是希望用户输入一个字符,并希望将此字符设置为char或int ,如何在不等待\n情况下获取字符。 我也试过使用fgets ,但因为我在循环中等待用户输入,所以只是连续执行printf而不会阻塞直到输入。 我的预期输出是: a97 b98 … 注意:我目前正在使用OSX,但我很满意适用于OSX或Linux的解决方案。

一旦输入已经在C中获得,则忽略该行的其余部分

给出如下输入: 6 2 1 2 3 4 5 6 4 3 3 4 5 6 第一行中的第一个数字是行中的变量数,第二个是行数。 如何才能获得前n/2值,其中n是一行中的值的数量并跳到下一行?

编译器不会在scanf()上停止输入

这是一个小C代码 #include int main() { char ch=’Y’; while(ch==’Y’) { printf(“\nEnter new value for Y “); scanf(“%c”,&ch); if(ch==’Y’ || ch==’y’) // do some work printf(“Y was selected\n”); } printf(“exiting main”); return 0; } 我第一次输入’Y’作为输入(没有qoutes),循环返回true并第二次进入内部,但这次它没有在scanf()上停止用户输入。(请执行输入为为了清晰起见,’Y’。 输出如下所示: 如此处所示,编译器第二次没有停止输入。 这背后的原因是什么? 提前致谢 !

输入后忽略输入键的C代码

我输入调用后stdin流中的Enter键或字符出现问题。 假设我有一个输入调用,所以我输入了内容。 但是然后将Enter键作为下一个输入调用的输入。 我认为在c ++中有cin.ignore()来做这个伎俩。 我只是找不到C版。 输入方法是getchar()和gets() 。 对不起,如果这是重复的。 我找不到与我相匹配的问题。 谢谢你的帮助! printf(“Do you want to view the lines? “); int choice = getchar(); while (choice == ‘y’) { char line[80]; printf(“What line do you want to see? “); gets(line); if (line != “all”) { n = atoi(line); printf(“Line %d: %s\n”,n,list[n]); } else for (int i […]

点击进入c后退出循环

如何通过按Enter键退出循环:我尝试了以下代码,但它无法正常工作! int main() { int n,i,j,no,arr[10]; char c; scanf(“%d”,&n); for(i=0;i<n;i++) { j=0; while(c!='\n') { scanf("%d",&arr[j]); c=getchar(); j++; } scanf("%d",&no); } return 0; } 我必须输入如下内容: 3//No of inputs 3 4 5//input 1 6 4 3//input 2 5 8//input 3 9

如何处理从复杂输入中提取双重类型数字(字符串)

祝大家好日子, 我对C编程很陌生,我偶然发现了一个问题,试图在几天内正确地解决,但仍然没有令人满意的结果。 我试图从这个forms的输入中提取一些double值{[ 5.1 ; 4 ], [15.3 ; -3.2] } {[ 5.1 ; 4 ], [15.3 ; -3.2] } {[ 5.1 ; 4 ], [15.3 ; -3.2] } 。 我尝试了很多方法,到目前为止最好的方法是我使用fgets()读取用户输入作为字符串,使用for循环,如果isdigit()看到一个数字我将它存储在另一个字符串中,然后我检查是否有在数字后面点,如果有,那么我把它放在数字后面的字符串,依此类推。 真正的问题是,当我想输出结果字符串并使用strtod()将其转换为我想要的double ,它只有在用户首先输入一些数字时才有效,但是如果输入看起来像{ [ 2.5 ; 1 ] } { [ 2.5 ; 1 ] }代码只是不关心,什么都不做。 任何帮助或见解将不胜感激,也许我采取了错误的方法? 谢谢。 我的代码 #include #include #include #include #include #define […]

getchar()和scanf中的输入缓冲区

很抱歉,因为我无法想到任何更好的标题我有一个问题处理输入这是我的测试代码,它将输入到字符串数组然后再次在屏幕上打印,非常简单 第一个测试代码正常工作 #include int main() { int i, index; char d, c[20]; scanf(“%d”, index); for(i=0; i<index; i++){ *(c+i) = getchar(); if (*(c+i)=='$') break; } printf("the string is %s", c); return 0; } 第二个测试代码,我确实使用了指针而不是c [i]而且程序没有运行。 这很奇怪,因为*(c + i)和c [i]是等价的 我变了 *(c+i) = getchar(); // (0) if (*(c+i)==’$’) 至 c[i] = getchar(); // (1) if (c[i]==’$’) 要么 […]