2016-11-13 4 views
0

数値と文字の両方からなる文字配列の要素を出力しようとしています。私のコードは次のとおり番号と文字で構成される文字配列の要素を印刷

char *receiveInput(char *s) { 
    scanf("%99s", s); 
    return s; 
} 

int main() { 
    char str[100], inp[50] = ""; 
    printf("Enter string"); 
    receiveInput(str); 
    char cToStr[3]; 
    int num = 3; 
    char c = (char)(num); 
    cToStr[0] = c; 
    cToStr[1] = str[0]; 
    cToStr[2] = '\0'; 
    strcat(inp, cToStr); 
    printf("%s\n", inp); 
    return 0; 
} 

はstrが"hey"に、inpが含まれており、"3h」を印刷する必要が言うことができますが、代わりに、それだけで印刷 'H' ときcToStr [0](CHAR 3)= Cを

数字と文字の両方を含む要素を印刷するにはどうすればいいですか?

答えて

1

数字3は文字 '3'と同じではありません。例えば、ASCII表の文字 '3'は16進数の0x33であり、EBCDIC表のコードは0xf3です。

あなたが '0'から9` * *が順に表示されなければなりません `桁という、ところで私たちC仕様の保証を10未満

+0

をNUMが提供

int num = 3; char c = num + '0'; cToStr[0] = c; 

を書くことができます使用中の文字セットでそれにもかかわらず、「A」から「Z」ではそうではない。 '' 0' + digit''は常に正しい出力桁を表示しますが、 '' A + digit''はそうしないかもしれません。 – usr2564301

+0

Nitpick:ascii '3'は実際には0x33です。 –

+0

9より大きい数値をcharと連結したい場合はどうなりますか? 25とchar 'g'と言うと、どうすれば2つを連結して '25g'にするのですか? –

1

Cは文字/文字列にASCIIエンコーディングを使用しています。値は51です。http://www.asciitable.com/を参照してください。

関連する問題