如何将char转换为int

时间:2013-10-23 14:05:24

标签: c char int

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

#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号Printed。 在这一点上,我只是得到了价值。 我将不胜感激任何帮助。

4 个答案:

答案 0 :(得分:1)

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

int aValue = a - '0';

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

答案 1 :(得分:0)

首先,您的语法需要一些检查

您应该知道以这种方式声明变量(在此示例中为char):

char a;

如果要在一行中声明多个相同类型的变量,请执行以下操作:

char a, b, c;

如果要为声明的变量赋值:

a = '3';

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

printf("%c", a);

如果你想从命令行获取char,我建议你使用getchar()(man getchar)而不是scanf,因为如果你想要实现的更好,而不是要求您使用scanf中的语法,我相信您还没有完全理解。

答案 2 :(得分:0)

您的问题非常清楚细节,因此有以下几种选择:

#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,而不是无效。
  • char=a,b,c;是语法错误。你的意思是char a,b,c;
  • return 0;
  • 末尾添加了main

答案 3 :(得分:0)

你的问题不太明白。我仍然会尽力帮忙。我认为你想要的是在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();
}