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\n",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ạ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:

  1. 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ến chu bằng cách thay vì khai báo char chu;, ta sẽ khai báo đồng thời khởi tạo char 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).

  2. Tuy nhiên, mình biết bạn muốn truyền giá trị cho biến chu bằng hàm scanf, 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ến chu. Ô 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ị cho chu, đến hàm printf thì chu đã được khởi tạo rồi nên không còn báo lỗi.

  3. Muốn nhập giá trị cho một biết char, thay vì scanf(), bạn nên dùng getchar(), 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();

  4. 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ần printf("%d", chu); là được, vì khi dùng ký tự %d là hàm printf đã 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ến int khác, ví dụ int giatri = (int)chu;

Chưa test :grin:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    char character;
    printf("Enter a character: ");
    scanf("%c", &character);
    printf("%d", character);
    return 0;
}

scanf sai rồi kia, phải sửa như này
printf("Enter a character:") ; scanf("%c",&character);

1 Like

Cái đó là nhập số :slight_smile: còn bài là nhập chữ in số.

1 Like

lol, cảm ơn bạn, mình nhìn lộn scanf :smile:

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?