01/10/2018, 10:44
Chuyển từ char ra số trong c
ví dụ là có chữ c đi thì muốn nó trở lại thành số trong bảng acsii rồi in ra mình làm sao
#include <stdio.h>
#include <stdlib.h>
int main()
{
char chu;
scanf("%c
",chu);
printf("%c",chu);
return 0;
}
cái này mình viết ra mà nó cứ lỗi mong mọi người chỉ lỗi sai
Bài liên quan
[Wandbox]三へ( へ՞ਊ ՞)へ ハッハッ
#include #include int main() { char chu; scanf("%c", &chu); printf("%d",chu); return 0; }
Bạn thiếu dấu & ở hàm scanf vì ta phải truyền vào pointer của c chứ không phải giá trị của c.
Bản chất của char là các ký tự đại diện cho số nên bạn cứ coi nó là số thôi
Mình chạy thử thì chương trình có một lỗi tường minh là
error C4700: uninitialized local variable 'chu' used
tại dòng `scanf_s("%c", chu);Để mình giải thích kỹ thêm:
Lỗi này, nghĩa tường minh là do bạn sử dụng biến
chu
mà chưa khởi tạo (initialize). Có thể sửa bằng cách khởi tạo giá trị cho biếnchu
bằng cách thay vì khai báochar chu;
, ta sẽ khai báo đồng thời khởi tạochar chu = 0;
. Cũng có thể sửa bằng cách thay vìscanf("%c\n",chu);
, ta dùng một giá trịint
khác làm biến của hàm, ví dụscanf("%c\n", 100);
(Mặc dù đây không phải là cách giải quyết của bài này, nhưng bạn nên lưu tâm, nó sẽ dùng để giải quyết nhiều bài khác).Tuy nhiên, mình biết bạn muốn truyền giá trị cho biến
chu
bằng hàmscanf
, thế nên bạn phải truyền vào một số nguyên, số nguyên đó là ô nhớ lưu giá trị của biếnchu
. Ô nhớ ấy được lấy bằng toán tử&
. Cách sửa lỗi logic cho bài này làscanf("%c\n", &chu);
. Như vậy thì ở trên sẽ không cần khởi tạo giá trị chochu
, đến hàmprintf
thìchu
đã được khởi tạo rồi nên không còn báo lỗi.Muốn nhập giá trị cho một biết
char
, thay vìscanf()
, bạn nên dùnggetchar()
, cách sử dụng đơn giản, ít lỗi, lại có thể vừa khai báo vừa khởi tạo:char chu = getchar();
Bản chất của
char
cũng gần nhưint
, muốn in ra giá trị mã của một ký tự, bạn chỉ cầnprintf("%d", chu);
là được, vì khi dùng ký tự%d
là hàmprintf
đã tự động ép kiểu. Tuy nhiên, nếu bạn thực sự muốn sử dụng giá trị mã thay vì chỉ in ra thì bạn nên ép kiểu rồi lưu nó lại ở một biếnint
khác, ví dụint giatri = (int)chu;
Chưa test
scanf sai rồi kia, phải sửa như này
printf("Enter a character:") ; scanf("%c",&character);
Cái đó là nhập số còn bài là nhập chữ in số.
lol, cảm ơn bạn, mình nhìn lộn scanf