【问题标题】:how to convert char to int如何将char转换为int
【发布时间】:2013-10-23 14:05:24
【问题描述】:

我正在尝试编写一个简短的程序:

#include <stdio.h>
void main()
{
char=a,b,c;
printf("please place 3 numbers:\n");
scanf("%c%c%c", &a,&b,&c);
}

我正在尝试解决的问题是如何将 char 更改为 int,因此如果我输入数字 3,我将打印数字 3。 在这一点上,我只得到了价值。 我将不胜感激。

【问题讨论】:

  • 这是 C#,真的吗?
  • 如果您的问题是关于打印变量,您应该发布实际打印变量的代码。
  • char=a,b,c? type=varname?
  • char=a,b,c 在 C 编程中是不允许的。它是一个语法错误。它应该被定义为 char a,b,c;主函数返回类型是 int。编辑:哦!对不起,已经有人发过这个了..:(

标签: c char int


【解决方案1】:

答案在某种程度上取决于您对字符集的假设。如果它类似于 ASCII(或者实际上是任何包含按顺序排列的数字的字符集),您只需将字符值偏移为字符 0 的值即可:

int aValue = a - '0';

不过,我确信 C# 提供了更好的方法来做您想做的事情。例如,请参阅this question 了解将字符串转换为整数值的一些示例。

【讨论】:

  • 对于数字,a - '0' 保证返回预期值,因为 C 标准保证它。
【解决方案2】:

首先你的语法需要一些检查

你应该知道你是这样声明一个变量的(在这个例子中是一个字符):

char a;

如果你想在一行中声明多个相同类型的变量:

char a, b, c;

如果你想给声明的变量赋值:

a = '3';

现在使用 printf 打印一个字符(man printf 是必须阅读的,更多信息在 coreutils 中):

printf("%c", a);

如果您想从命令行获取字符,我建议您使用 getchar() (man getchar) 而不是 scanf,因为如果更适合您想要实现的目标并且不需要您使用scanf 中的语法,我相信你还没有完全理解。

【讨论】:

    【解决方案3】:

    你的问题非常简单,所以这里有几个选项:

    #include <stdio.h>
    int main()
    {
        char a,b,c;
        printf("please place 3 numbers:\n");
        scanf("%c%c%c", &a,&b,&c);
    
        printf("Printing ints (auto-promotion): %d %d %d\n", a, b, c);
        printf("Printing ints (explicit-promotion): %d %d %d\n", (int)a, (int)b, (int)c);
        printf("Printing digits: %d %d %d\n", a-0x30, b-0x30, c-0x30);
        return 0;
    }
    

    如果输入是123, 我希望输出是:

    Printing ints (auto-promotion): 49 50 51
    Printing ints (explicit-promotion): 49 50 51
    Printing digits: 1 2 3 
    

    我在此过程中修复了一些东西。

    • main 应该返回一个 int,而不是 void。
    • char=a,b,c; 是语法错误。你的意思是char a,b,c;
    • main 末尾添加了return 0;

    【讨论】:

    • 最好不要为此使用0x30。 C 标准不要求 C 实现使用 ASCII,即使实现,使用没有解释的数字代码也是神秘的。可以改写a-'0',这样既便携又清晰。 (C标准要求数字字符连续且升序。)
    【解决方案4】:

    你的问题不太好理解。我仍然会尽力提供帮助。我认为您想要的是在 char 变量中存储一个整数值。您可以使用以下代码来实现:

    #include<stdio.h>
    void main()
    {
    char a,b,c;
    printf("Enter three numbers:\n");
    scanf(" %c %c %c",&a,&b,&c);       //notice the spaces between %c
    }
    

    或者如果你想输入一个字符并打印它的ASCII值,你可以使用下面的代码:

    #include<stdio.h>
    #include<conio.h>
    void main()
    {
    char a,b,c;
    printf("Enter three characters:\n");
    scanf(" %c %c %c",&a,&b,&c);
    printf("Entered values: %d %d %d",a,b,c);
    getch();
    }
    

    【讨论】:

      猜你喜欢
      • 2017-03-21
      • 2011-04-09
      • 2018-05-15
      • 2012-06-02
      • 2015-04-07
      • 1970-01-01
      • 2014-09-20
      • 2011-12-15
      • 2015-07-11
      相关资源
      最近更新 更多