我正在尝试编写一个简短的程序:
#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。在这一点上,我只得到了价值。我将不胜感激任何帮助。
答案在某种程度上取决于您对字符集的假设。如果它类似于 ASCII(或者实际上是任何包含按顺序排列的数字的字符集),则只需将字符值偏移字符的值0
:
int aValue = a - '0';
不过,我确信 C# 提供了更好的方法来做你想做的事情。例如,有关将字符串转换为整数值的一些示例,请参阅此问题。
你的问题不太好理解。我仍然会尽力提供帮助。我认为您想要的是在 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();
}
您的问题在细节上非常简单,所以这里有几个选项:
#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
。首先你的语法需要一些检查
你应该知道你是这样声明一个变量的(在这个例子中是一个字符):
char a;
如果要连续声明多个相同类型的变量,请执行以下操作:
char a, b, c;
如果要为声明的变量赋值:
a = '3';
现在使用 printf 打印一个字符(必须阅读 man printf,更多信息在 coreutils 中):
printf("%c", a);
如果您想从命令行获取 char,我建议您使用getchar()
(man getchar) 而不是scanf
因为如果更适合您想要实现的目标并且不需要您使用scanf
我相信您不使用的语法还没有完全明白。