scanf相关内容

简单的 C scanf 不起作用?

如果我尝试诸如: int anint;字符 achar;printf("\n请输入任意整数:");scanf("%d", &anint);printf("\n请输入任意字符:");scanf("%c", &achar);printf("\n你好\n");printf("\n输入的整数是%d\n", anint);printf("\n输入的字符是%c\n", achar); 它允许输入一个整数, ..
发布时间:2021-12-02 00:00:38 其他开发

Scanf 在 C 中每隔一个 while 循环跳过

我正在尝试开发一个简单的基于文本的刽子手游戏,主游戏循环从提示输入每个字母的猜测开始,然后继续检查该字母是否在单词中并杀死如果不是,请关闭.但是,当我运行游戏时,每次都会出现两次提示,并且程序不会等待用户的输入.它还带走了一条生命(如果输入正确则为一条生命,如果不正确则为两条生命),因此无论它输入的是什么都与之前的输入不同.这是我的游戏循环,简化了一点: while (!finished){pr ..
发布时间:2021-12-01 23:56:48 其他开发

如何在 C 中对单个字符执行 scanf

在 C 中:我正在尝试使用 scanf 从用户那里获取字符,当我运行它时,程序不会等待用户输入任何内容...... 这是代码: char ch;printf("请输入一个字符");scanf("%c", &ch);printf("%c\n",ch); 为什么不起作用? 解决方案 %c 转换说明符不会自动跳过任何前导空格,因此如果输入流中有一个杂散的换行符(从前一个条目,例如)sc ..
发布时间:2021-12-01 23:56:21 其他开发

如何在循环中使用 sscanf?

有没有好办法用 sscanf 遍历字符串? 假设我有一个看起来像这样的字符串: char line[] = "100 185 400 11 1000"; 我想打印总和.我真正想写的是: int n, sum = 0;while (1 == sscanf(line, " %d", &n)) {总和 += n;line += } 但是没有干净的方法可以从 sscanf 中获取这些信息.如 ..
发布时间:2021-12-01 23:49:43 其他开发

scanf的缺点

我想知道scanf()的缺点. 在许多站点中,我读到使用 scanf 可能会导致缓冲区溢出.这是什么原因?scanf 还有其他缺点吗? 解决方案 scanf 的问题(至少)是: 使用%s从用户处获取字符串,这导致字符串可能比您的缓冲区长,从而导致溢出. 扫描失败的可能性,将您的文件指针留在不确定的位置. 我非常喜欢使用 fgets 来读取整行,这样你就可以限制读取的数据 ..
发布时间:2021-12-01 23:45:40 其他开发

如何防止scanf导致C中的缓冲区溢出?

我使用此代码: while ( scanf("%s", buf) == 1 ){ 防止可能的缓冲区溢出以便它可以传递随机长度的字符串的最佳方法是什么? 我知道我可以通过调用来限制输入字符串,例如: while ( scanf("%20s", buf) == 1 ){ 但我更希望能够处理用户输入的任何内容.或者这不能使用 scanf 安全地完成,我应该使用 fgets? 解决方案 ..
发布时间:2021-12-01 23:44:48 其他开发

我可以用什么代替 scanf 进行输入转换?

我经常看到有人劝阻其他人不要使用 scanf 并说有更好的选择.但是,我最终看到的要么是“不要使用 scanf" 或 “这是一个正确的格式字符串",而且从来没有任何示例提到的“更好的选择". 例如,让我们看这段代码: scanf("%c", &c); 这会读取最后一次转换后留在输入流中的空白.通常建议的解决方案是使用: scanf(" %c", &c); 或者不使用scanf. ..
发布时间:2021-12-01 23:44:38 其他开发

为什么 scanf() 在这段代码中导致无限循环?

我有一个小的 C 程序,它只从 stdin 读取数字,每个循环周期一个.如果用户输入一些 NaN,则应将错误打印到控制台,并且应再次返回输入提示.在输入“0"时,循环应该结束并且给定的正/负值的数量应该打印到控制台.这是程序: #include int main(){整数,p = 0,n = 0;而 (1) {printf("->");if (scanf("%d", &number) == 0) ..
发布时间:2021-12-01 23:43:17 其他开发

scanf() 格式字符串中尾随空格的影响是什么?

这段代码中scanf("%d")和scanf("%d")有什么区别,区别在于格式中的尾随空白字符串? #include int main(void){内部 i, j;printf("请输入 j 的值");scanf("%d",&j);printf("j 是 %d\n", j);printf("请为我输入一个值");scanf("%d", &i);printf("我是 %d\n", i);返回0; ..
发布时间:2021-12-01 23:40:50 其他开发

你如何允许使用 scanf 输入空格?

使用以下代码: char *name = malloc(sizeof(char) + 256);printf("你叫什么名字?");scanf("%s", 姓名);printf("你好 %s.很高兴认识你.\n", name); 用户可以输入他们的名字,但是当他们输入一个像Lucas Aardvark这样带有空格的名字时,scanf()只会切断Lucas之后的所有内容代码>.如何让 scanf ..
发布时间:2021-12-01 23:39:34 其他开发

scanf 后 fgets 不起作用

#include #include #include void delspace(char *str);int main() {int i,循环;字符 s1[101], s2[101];scanf("%d", &loops);而(循环--){fgets(s1, 101, stdin);fgets(s2, 101, stdin);s1[strlen(s1)] = '\0';s2[strlen(s2) ..
发布时间:2021-12-01 23:37:52 其他开发

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

我有以下程序: int main(int argc, char *argv[]){国际a, b;字符 c1, c2;printf("请输入:");scanf("%d",&a);//第 1 行printf("请输入其他内容:");scanf("%d", &b);//第 2 行printf("请输入一个字符:");scanf("%c",&c1);//第 3 行printf("请输入另一个字符:"); ..
发布时间:2021-12-01 23:33:03 其他开发

intfmt 的含义:db "%d", 10, 0 in assembly

我最近在我的一个汇编文件的顶部看到了这个,并意识到我在打印整数的过程中花了很长时间使用它,却没有真正意识到它最初来自哪里(在我的基本汇编模板中使用)或 10, 0 结尾的意思是: section .dataintfmt: db "%d", 10, 0 谁能分解一下并解释不同的组成部分,特别是第 2 行的组成部分? 我现在正在尝试使用 scanf 读取输入,但此格式似乎无法正常工作.想我是 ..
发布时间:2021-11-25 07:10:46 C#

将字符串扫描为十六进制字符数组

这是我的示例代码: char a;字符 str [20];无符号字符 b[8] ;无符号字符 c[8];int argsread;国际我;init_8051();同时(1){printf("\n 进入 64 位运算\n");argsread = scanf("%s", str);sscanf(str, "0x%x%c0x%x", b, &a, c);printf("\n %d 个参数读取\n", ..
发布时间:2021-11-25 06:16:32 C#

ASM x64 scanf printf double, GAS

我不明白为什么这段代码对我不起作用.我需要对 double 使用 scanf 函数,然后对同一个 double 使用 printf 函数.使用此代码时效果不佳.我看到的是非常随机的字符. .datad1: .double格式:.asciz "%lf\n"格式 2: .asciz "%lf".文本.globl 主主要的:subq $8,%rsp#scanfmovq $0, %raxmovq $d1 ..
发布时间:2021-11-25 06:12:25 C#

如何使用scanf获取指针大小的整数?

我有一些用于 FlexLM 的继承代码,它将整数转换为需要在 32 位和 64 位机器上工作的指针.整数正在从参数的 argc 填充到使用 scanf 读取整数值的程序中. 我应该如何可靠地读取 argc 字符串以获得适合分配给指针的值,以便它在 32 位和 64 位机器上都能工作? 目前代码看起来像这样: //FlexLM 包括:typedef char * LM_A_VAL_TY ..
发布时间:2021-11-25 00:25:06 C/C++开发

用 %c 或 %s 扫描

我必须为大学做一个计划,在该计划中,我应该将一定数量的人区分喜欢和不喜欢某事的人.所以我这样做了: char like[100];printf("喜欢吗?Y 或 N \n");scanf ("%c", 喜欢); 程序已编译,但未按应有的方式运行.当被问到“喜欢?"时,用户无法写出“y 或 n" 所以我尝试了这个: char like[100];printf("喜欢吗?Y 或 N \ ..
发布时间:2021-11-18 03:16:00 其他开发

动态分配用户输入的字符串

我正在尝试编写一个执行以下操作的函数: 开始一个输入循环,打印'>' 每次迭代. 获取用户输入的任何内容(未知长度)并将其读入字符数组,必要时动态分配数组的大小.用户输入的行将以换行符结束. 在字符数组的末尾添加一个空字节 '\0'. 当用户输入空行时循环终止:'\n' 这是我目前写的: void input_loop(){字符 *str = NULL;printf(">"); ..
发布时间:2021-11-18 03:14:29 其他开发