Tag: scanf

Scanf输入转移到下一个scanf

我在这里有一个代码,在输入带空格的字符串时会有一些不需要的行为。 例如print illegal_argument 。 当有多个单词的输入进来时,我希望它只注册第一个单词。 目前发生的是: christian@oblig2 $ print 0 Enter router ID for information > ID: 0, flag: f7, model_length: 13, model: D-Link y6000 它在命令循环中注册第一个用于比较的print 。 但是,而不是scanf提示用户输入下一个输入,而是忽略该操作,并取消用户从前一个scanf输入的第二个字/数字。 我想要发生的是: christian@oblig2 $ print 0 Enter router ID for information > 0 ID: 0, flag: f7, model_length: 13, model: D-link y6000. 一切都按预期工作,但我想知道是否有更简单的方法来做到这一点。 我尝试过使用Strtok,没有太多运气。 char input[256]; printf(“%s@oblig2 $ […]

为什么将scanf()的结果与NULL进行比较会产生编译器警告?

我用C语言写作,我需要阅读输入中的所有内容,但我不知道会收到多少个字符。 我写 while (scanf(“%c”, &read) != NULL) 但是编译器告诉我: [Warning] comparison between pointer and integer ,那么我应该写什么呢?

使用scanf解析c中的方程组

我需要解析用户的输入,这些输入可以是任意数量的变体:1 + 1 4(3-0)= x 1 *(3)-8 我如何使用scanf获取raw_input,然后拆分所有不同的值并告诉它是否是字符串,即x = – ()或int? 这就是我的想法 char * raw_input; scanf(“%s”,raw_input); 它需要一个char数组,然后我只需要拆分并转换为单个元素。 做输入和(拆分和转换)的最佳方式是什么? 谢谢

使用scanf()输入问题

我是C的新手,所以我在使用scanf()时遇到了一些麻烦。 #include #include int main() { int height; int weight; printf(“Enter height in inches:\n”); scanf(“%d”, &height); printf(“Enter weight in pounds:\n”); scanf(“%d”, &weight); printf(“You are %d inches tall and weigh %d pounds.”, height, weight); return 0; } 我很确定这是正确的语法,但是当我运行它时,它显示一个空屏幕,在我输入2个数字后,它显示: 64 120 以英寸为单位输入高度 以磅为单位输入重量: 你身高64英寸,体重120磅。 根据一些教程,在我输入第二个数字之前,它应该显示“以英寸为单位输入高度:”,然后输入第一个数字和“以磅为单位输入重量:”。 请帮我! 我正在使用Eclipse编写程序,MinGW作为编译器,如果相关的话。

使用C中的fscanf读取一系列HEX值(每次2个)

所以我有一个文本文件,假设名为text.txt。 其格式为: 4C 4D 4E 4F (即字符串“LMNO”的hex值)。 我已正确打开文本文件等。我应该如何使用fscanf读取四个字节的序列(即一次1个字节),将每个字节存储在一个变量中(具有适当的数据类型)。 我的最终目标是了解如何在字符数组中存储char test[4]; 字母LMNO (即test [0] =’L’,test [1] =’M’,…)

在C中多次从stdin读取相同的数据

我正在C中编写一个基于跟踪文件的缓存模拟器,我想通过stdin将其导入程序。 这些跟踪文件最长可达150亿行,因此我不希望将它们存储在活动内存中的任何位置。 我想使用在程序输入中指定的配置文件,从一次调用中为不同的内存配置多次运行模拟。 程序调用应如下所示: cat | (trace file) ./MemorySimulator -f (config file) 现在,程序运行的方式是它使用配置文件来设置模拟的参数,然后使用scanf()从stdin读取格式化数据中的管道,直到它到达跟踪文件的末尾。 然后,它从配置文件进入下一个配置设置,并尝试再次从跟踪文件中读取数据。 此过程将继续,直到各种配置选项用尽为止。 我遇到的问题是,一旦我运行跟踪文件一次,我就无法再从配置文件中为以下内存配置捕获数据。 有没有办法在我的C程序中回收管道数据,以便我可以从单个程序执行多次运行模拟? 到目前为止,我还没有找到实现这一目标的方法。

scanf需要比请求更多的输入

我正在尝试使用scanf从用户那里获得5个浮点值,问题是用户需要输入6个值才能完成程序。 虽然我知道我不应该使用scanf,但令我困扰的是,我无法理解它。 有关如何使用scanf修复它的任何见解,建议吗? #include #include int main() { int i = 0 , j = 0; char buf[128] = {0}; float numbers[5] = {0.0}; float keep = 0.0; printf(“Please input 5 numbers : \n”); for (i = 0; i < 5; i++) { scanf("%f\n", &numbers[i]); } printf("Done!"); 谢谢, MIIJ

扫描到新行

我想读取输入的所有文本,直到输入换行符。 这是我的代码。 int i=0; char ch[MAX]; printf(“Enter the text\n”); while(true) { scanf(“%c”,&ch[i]); if(ch[i]==’\n’) break; i++; } 但是当我尝试执行它时只读一个单词。 我也试过scanf(“%s”,ch); 但结果是一样的。

scanf等效于c中的箭头键支持

c中是否有一些函数表现得像scanf(从键盘输入),同时能够通过按箭头键在输入中移动光标,就像在终端中一样?

scanf()将新行char留在缓冲区中

我有以下程序: int main(int argc, char *argv[]) { int a, b; char c1, c2; printf(“Enter something: “); scanf(“%d”,&a); // line 1 printf(“Enter other something: “); scanf(“%d”, &b); // line 2 printf(“Enter a char: “); scanf(“%c”,&c1); // line 3 printf(“Enter another char: “); scanf(“%c”, &c2); // line 4 printf(“Done”); // line 5 system(“PAUSE”); return 0; } 正如我在C书中读到的那样,作者说scanf()在缓冲区中留下了一个新的行字符,因此,程序不会在第4行停止供用户输入数据,而是将新行字符存储在c2中并移至第5行。 […]