scanf 并将 char 保留为整数

2023-12-25

我就是无法理解。 Char 是整数,对吗?所以我可以做

int var;
scanf("%d", &var);
I:[65]
printf("%c", var);
o:[A].

为什么这样做是错误的:

char var;
scanf("%d", &var);
I:[A]
printf("%d", var)
O:[-1236778]

在第二scanf()

scanf("%d", &var);

the scanf()解析打印指令%d。这意味着该论证&var预计是一个地址int。相反,地址为char被给予。的大小int肯定大于a的大小char. As scanf()试图放置一个intsize 量放入仅适用于“char”的位置,对于 scanf() 可能会发生奇怪的事情,可能会将数据放置在不应该放置的位置。尝试将 10 磅土豆放入 5 磅重的袋子中。

此外 - 似乎值得怀疑的是scanf("%d", &var);成功读取输入“A”。scanf()会看到A,并且由于它不是数字,因此将放弃扫描满足int定义。因此你的scanf("%d", &var)可能返回的值为0因此没有放置anything in var。保存你的培根,因为如果这样做了,它就会将数据放置在不应该放置的空间中。

决赛printf("%d", var)然后简单地打印出var从未被设置过,所以你得到whatever碰巧在char。-1236778似乎不太可能。我怀疑该帖子与代码或输入/输出不匹配。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

scanf 并将 char 保留为整数 的相关文章

  • 从文本文件中读取字符串和整数

    假设我有一个如下所示的文件 51 41 52 07 52 01 51 22 50 44 49 97 Coal Diggers 77 26 78 33 78 29 78 12 77 09 75 74 Airplane Flyers 31 25
  • 字符数组的初始值设定项字符串太长

    我不断收到此错误 字符数组的初始化字符串太长 即使我将 num 和 length 更改为 1 它仍然会出现错误 include
  • 希腊字符串的长度大于应有的长度

    我正在编写一个程序 我将一串希腊字符作为输入 当我打印它的 len 时 它输出它的双精度 例如 如果 ch 希腊字符 或 ch printf d strlen ch 输出 4 而不是 2 如果 ch ab 则输出 2 这是怎么回事 您可以使
  • 强制 telnet 客户端进入字符模式

    我有一个应用程序 我接受来自 telnet 客户端的套接字连接 并建立一个简单的键盘驱动的字符 GUI telnet 客户端 至少在 Linux 上 默认为一次一行模式 所以我总是必须这样做 mode char手动 浏览相关 RFC 表明
  • 什么是 scanf("%*s") 和 scanf("%*d") 格式标识符?

    格式的实际用途是什么 在 scanf 中 如果这种格式存在 那么它背后一定有某种目的 下面的程序给出了奇怪的输出 include
  • gcc 内部使用相同的位表示 int 和 char 吗?

    我只是为了好玩而玩弄 unicode 字符 不使用 wchar t 支持 我只使用常规的 char 数据类型 我注意到 当以十六进制打印它们时 它们显示了完整的 4 个字节 而不是仅一个字节 对于前 考虑这个 c 文件 include
  • C++:获取数组中char元素的索引

    我需要获取数组中的字符数 const char myarray 5 0 a e f c Create array of char int number 0 Create variable number getposition myarray
  • mysql 中 int(11) 列的大小是多少(以字节为单位)?

    柱子的尺寸是多少int 11 在mysql中以字节为单位 该列中可以存储的最大值 An INT无论指定什么长度 都将始终为 4 个字节 TINYINT 1 字节 8 位 SMALLINT 2 字节 16 位 MEDIUMINT 3 字节 2
  • Java 中的 sscanf 等效项[重复]

    这个问题在这里已经有答案了 可能的重复 用于使用已知模式解析字符串中的值的 sscanf 的 Java 等效项是什么 https stackoverflow com questions 8430022 what is the java eq
  • 在C#中,如何检测一个字符是否是非ASCII字符?

    我想在 C 中检查 char 是否包含非 ASCII 字符 检查特殊字符的最佳方法是什么 例如志 or ASCII 范围为 0 127 因此只需检查该范围 char c a or whatever char you have bool is
  • 如何声明文本字段只能包含整数?

    在 swift 中 我试图创建一个文本字段 该文本字段将允许启用按钮 但仅当文本字段包含整数时 我怎样才能做到这一点 两件事情 指定键盘类型以仅显示数字键盘 所以 设置keyboardType to numberPad 然而 这还不足以阻止
  • Windows 上的 wchar_t 和 char16_t 是一样的吗?

    我有一个实例std u16string 我可以通过它吗c str 到一个 Win32 API 它期望LPCWSTR 没有任何类型的转换 例如 我可以安全地这样做吗 auto u16s std u16string u Hello SetWin
  • 如何在 Swift 中将 Int 转换为字符

    我在这里挣扎了十多分钟 失败了 我屈服了 我需要在 Swift 中将 Int 转换为 Character 但无法解决它 Question 你如何转换 cast an Int integer to a Character char 在斯威夫特
  • scanf导致C程序崩溃

    这个简单的问题导致我的整个程序在第一次输入期间崩溃 如果我删除输入 程序可以正常工作 但是一旦我将 scanf 添加到代码中并输入输入 程序就会崩溃 include
  • 如何在c中的某个位置终止字符指针?

    我试图通过设置空终止符来终止 c 中的字符指针 在特定位置 例如 如果我有一个 char 指针 char hi hello 我希望它是 hell 通过设置o为空 我尝试过使用 strcpy 来执行此操作 例如 strcpy hi 4 0 但
  • Objective-C:int值无故改变

    Objective C 我需要帮助保留 int 的值 无需我的命令 它就在我身上发生变化 最初的问题是 如何声明和保留 int 这在另一篇文章中得到了满足 Objective C 如何声明和保留 int https stackoverflo
  • 如何正确安全地使用sscanf

    首先 关于使用的其他问题sscanf不要回答我的问题 因为常见的答案是不使用sscanf完全并使用fgets or getch相反 这对我来说是不可能的 问题是我的 C 教授希望我使用scanf在一个程序中 这是一个要求 然而 程序还必须处
  • 如何将单个 char 转换为 int [重复]

    这个问题在这里已经有答案了 我有一串数字 例如 123456789 我需要提取它们中的每一个以在计算中使用它们 我当然可以通过索引访问每个字符 但是如何将其转换为 int 我研究过 atoi 但它需要一个字符串作为参数 因此 我必须将每个字
  • C语言中如何比较float变量和double变量?

    float num1 1 if num1 1 printf Yes it is equal n else printf No it is not equal n 输出 gt 是的 它是相等的 whereas float num1 1 2 i
  • 运算符“&&”不能应用于“int”和“bool”类型的操作数

    我试图找出输入的数字是否可以被 9 和 13 整除 但它不允许我使用我需要的运算符 我知道变量类型是错误的 但我不知道如何使变量类型被接受 我对编码不熟悉 所以答案可以尽可能基本 而不是小便 public bool IsFizzBuzz i

随机推荐