【问题标题】:issues with C Program to convert user input to Integer and then Integer to (HEX, Bin, Alpha)C 程序将用户输入转换为整数然后将整数转换为(HEX、Bin、Alpha)的问题
【发布时间】:2015-03-15 22:03:33
【问题描述】:
#include <stdio.h>
#include <stdlib.h>

int main(void) {

/*holds the number to be converted between methods.*/
char convNumber;

/*storageInt */
int storageInt;

    puts("put text in here to convert to bin");
    while ((convNumber = getchar()) != '$') {

        storageInt = storageInt * 100 + convNumber;

    }

     printf("%d", &storageInt);

    return 0;
}

好的,上面是给我带来问题的代码。我是 C 新手,这是一个学校项目。

问题: 如何将带有定界字符“$”的用户输入转换为可以存储和打印或用于转换为十六进制或二进制的整数。页面底部是我的输出最终应该是什么样子的完整视图,以便了解所需的输入类型。

背景和任务信息:

尝试将用户输入打印为整数时,我不断收到意外输出。我的目标是有 2 个整数的块,代表 ASCII,从 0 到 N(N 是用户输入的结尾)。通过键入 $ 将用户输入指定为已完成。我做错了什么?

通过程序选择“A”、“A”,最后选择“A$”($ 用于终止程序)我得到 2337412 而不是预期的 65 ascii 用于“A”。

所以请帮助我理解这一点,以便我在后续作业中做得更好(寻找解释)。提前致谢!

结束结果:

欢迎使用编码器!
选择输入(H、A、B、Q):A
选择输出(H,A,B):H
输入您的 Alpha 输入。
你好!再见! $
486921204279652120
选择输入 (H,A,B,Q):H
选择输出(H,A,B):B
输入您的十六进制输入。
486921204279652120$
010010000110100100100001001000000100001001111001011001010010000100100000
选择输入(H、A、B、Q):B
选择输出(H,A,B):A
输入您的 bin 输入。

【问题讨论】:

  • "我将对此进行编辑以防止复制和粘贴。" - 不允许您这样做。 SO 旨在成为 Q&A 的存储库,它将帮助有同样问题的人。如果您不希望公开此内容,请不要发布。 (而且所有帖子都有完整的公开编辑历史记录,因此“编辑”完全没用。)
  • 我不是不想公开它,我是要修改它以防止下个季度在这堂课上作弊。如果我无法进行更改,那么它就是这样。无论如何,这并不能改变我被困住并且需要一些帮助才能继续前进的事实。如果您想帮助我,我将不胜感激任何建议或指示。
  • 如果您在这里需要帮助,您应该首先缩小您的问题范围。您发布的有关输入/输出选择的所有代码都无关紧要。把它全部去掉,保留最小的核心(阅读文本,转换为数字),并准确描述它出了什么问题。应该是大约 10-15 行代码和大约那么多的描述。确保生成的 sn-p 构建没有警告,包括当您包含优化时(-Wall -Wextra -Werror -O2 作为 gcc 或 clang 的最低要求)。
  • 我会减少它。目前我没有任何警告。我将更新的直接问题是如何将带有定界字符“$”的用户输入转换为可以存储和打印或用于转换为十六进制或二进制的整数。
  • 减少了。你有什么方向或什么我应该特别注意的吗?

标签: c integer hex ascii scanf


【解决方案1】:

您正在打印storageInt 的内存地址。您只在 scanf 中使用内存地址,原因在您了解更多之后会很明显。字符串是一个例外,但这不是字符串。

这样做:

printf("%d", storageInt);

【讨论】:

  • 我会试一试并报告。谢谢
  • 顺便问一下,你什么时候真正初始化 storageInt?它的起始值实际上可以是任何值。您应该在声明中将其设置为正确的值。
  • 我已经修复了 storageInt 的初始化并修复了 printF 调用。它现在创造了更一致的东西。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-08-04
  • 2022-01-19
相关资源
最近更新 更多