2013-10-23 69 views
0

我試圖寫一個簡短的程序是:如何將char轉換爲int

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

我試圖解決的運動是如何改變字符爲int,所以如果我在寫號碼3,我會得到號碼3打印。 在這一點上,我只得到了價值。 我將不勝感激任何幫助。

+1

這是C#,嚴重? – varocarbas

+0

如果你的問題是關於打印變量的,你應該發佈實際打印變量的代碼。 – abelenky

+1

char = a,b,c?鍵入= VARNAME? –

回答

1

答案在某種程度上取決於您對字符集的假設。如果是像ASCII(或真的,這包括按順序數字的任何字符集),你只需要通過字符0的價值以抵消字符值:

int aValue = a - '0'; 

我敢肯定,C#雖然提供了更好的方法來做你想做的事情。例如,有關將字符串轉換爲整數值的一些示例,請參見this question

char a; 

如果你想聲明的多個變量:

+1

數字,'a - '0''保證返回預期值,因爲C標準保證它。 –

0

的所有語法需要一些檢查

你應該知道,你聲明一個變量這樣(在這個例子中一個char)第一同類型的一排你做:

char a, b, c; 

如果你想一個值賦給聲明的變量:

a = '3'; 

現在用printf打印字符(男人的printf是一個必須閱讀,更多的相關信息是的coreutils):

printf("%c", a); 

如果你想通過命令行的字符,我建議您使用getchar()(man getchar)而不是scanf,因爲如果您更適合嘗試實現,並且不要求您使用scanf中的語法,我相信您還沒有完全理解它。

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;
  • main的末尾增加了一個return 0;
+1

爲此目的,最好不要使用'0x30' C標準不要求C實現使用ASCII,即使實現了,也沒有解釋的數字代碼的使用是神祕的,我們可以寫'a-'0',而且這是可移植的,清楚(C標準要求數字字符是連續的和升序的。) –

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(); 
}