Tag: scanf

C scanf请求格式

我需要在我的C程序中scanf输入。 我是这样做的: scanf(“{[ %lf; %lf],[ %lf; %lf],[ %lf; %lf]}”, …) 但它对某些预期的输入无效。 它必须工作 {[0; 0],[10; 10],[15; 15]} 以及 {[4; -1],[7; 1.5],[4; 4]} 要么 但它需要printf(“Bad input.\n”)如果有些{ } ; , [ ] { } ; , [ ]缺少或额外。

在C中获取用户输入的最简单方法是什么?

似乎有很多方法可以在C中获得用户输入。 什么是最简单的方法,需要很少的代码? 基本上我需要显示这个: Enter a file name: apple.text 基本上我需要询问用户文件名。 所以我需要一些能够获得用户输入的单词的东西。

scanf的问题(“%d \ n”,&i)

对于此代码: int i; scanf(“%d\n”,&i); 在输入两个数字之前,我无法停止我的程序。 我觉得很奇怪,我知道当输入合适时,scanf会返回1.当我输入“12a’Enter”,”12’Enter’2“等等时,没关系,i = 12 ,似乎当我输入的东西是不同的int或输入’Enter’和其他东西时,scanf返回1。 我错过了什么?

在while循环中使用scanf函数

我正在尝试为编程分配格式化以空格分隔的用户输入。 本质上,输入由任意数量的表达式组成 L integer integer integer integer和C integer integer integer 。 例如: L 1 1 5 7 C 4 5 3 。 到目前为止,我已经设法根据初始字符提取整数,并可以使用scanf函数迭代字符串: char a; while(scanf(“%c”, &a) == 1){ if(a == ‘C’){ int inputX, inputY, inputR; scanf(“%d %d %d”, &inputX, &inputY, &inputR); printf(“%d %d %d\n”, inputX, inputY, inputR); } else if(a == ‘L’){ int x1, […]

我的程序跳过获取输入数据?

我写了一个简单的程序来兑换货币并且能够买到啤酒。 但是在程序中有一些东西,我不知道为什么,它会自动跳过第三个输入数据 – >结束程序。 这是我的代码: #include #include int main() { int ex_rate_into_vnd = 20000; //! Exchange Rate int beer = 7000; //! Local price of a beer float in_c = 0; //! Input amount of money float out_c = 2; //! Amount of currency to exchange ! float choice; //! Switch mode char buy; //! […]

使用scanf()读取多行输入

相关代码段: char input [1024]; printf(“Enter text. Press enter on blank line to exit.\n”); scanf(“%[^\n]”, input); 这将读取整个行,直到用户点击[enter],阻止用户进入第二行(如果他们愿意)。 要退出,他们会再次按[enter]然后再按[enter]。 所以我尝试了各种while循环,for循环,以及涉及新行转义序列的scanf()周围的if语句,但似乎没有任何工作。 有任何想法吗?

为什么scanf在一次失败后不等待用户输入?

我在下面的代码中遇到问题。 当我输入任何整数时,即(0-9) ,那就没问题。 但是当我输入其他字符如A , B或任何其他字母时, scanf()失败。 然后它不会等待任何进一步的输入。 我已为此附加了代码段。 我非常需要仅使用C标准库进行error handling。 #include int main() { int choice; while(1) { printf(“Enter your choice: “); if(0 == scanf(“%d”, &choice)) { printf(“Some error occured\n”); //break;/*I did not want to break this loop as I use this to show menu*/ } switch(choice) { case 0:printf(“Case 0\n”);break; case 1:printf(“Case 1\n”);break; […]

scanf对于short int的奇怪行为

代码如下: #include main() { int m=123; int n = 1234; short int a; a=~0; if((a>>5)!=a){ printf(“Logical Shift\n”); m=0; } else{ printf(“Arithmetic Shift\n”); m=1; } scanf(“%d”,&a); printf(“%d\n”, m); } 在行scanf(“%d”,&a); m的值变为0 。 我知道它可能是由scanf引起的:a的类型很短,输入的类型是int。 但这怎么会影响m的价值呢? 非常感谢 !

如何限制C中的scanf函数在输入太长时打印错误?

我想限制scanf函数,所以当我输入例如一个超过30个字符的char* array ,它将无法获取它并且我的输出将是错误的。 我有一个提示使用[^ n]或类似的东西,但我不明白该怎么做? 我知道我可以使用scanf(“%30s”..)但我不希望输入有效,只是错误。 任何帮助都会很棒。

如何从scanf获取换行符,即使它是唯一的输入

我正在做作业,要求我读取一个表示循环大小的整数n ,然后读取一行字符n次并在用户输入后立即打印。 所以我用scanf然后用printf打印它。 问题是如果用户的输入只是一个换行符,它应该打印另一个\n ,但是当它是单个\n时, scanf似乎忽略了输入。 有没有办法用scanf进行这项任务,还是我应该尝试别的? int i; scanf(“%d”, &i); for(int ct=0; ct<i; ct++) { char buff[28]; scanf("%s", buff); // if I just press enter here prtinf("%s\n", buff); // then I must get \n\n here }