30/09/2018, 16:17

Tại sao i chạy từ 0 đến 256 mà khi in ra kết quả lại là ký tự?

FILE*f=fopen(file,"r");
     unsigned char c;
        int i;
     while (1){
           fscanf(f,"%c",&c);
           if (feof(f))
           break;
           tree[c].f++;
           }
fclose(f);

trước đó mình đã khai báo cấu trúc tree gồm f và unsigned char c
sau đó mình chạy

int i;
      for(i=0;i<256;i++)
      {
          if (tree[i].f>0)
            printf("%c: %d
",i,tree[i].f);
      }

tại sao i chạy từ 0 đến 256 mà khi in ra kq lại là ký tự.có phải là do kiểu unsigned char không?

Trần Hồng Phong viết 18:18 ngày 30/09/2018

Ý bạn nói biến i in ra kí tự à? Do bạn dùng %c

Hồ Thế Chín viết 18:29 ngày 30/09/2018

bạn giải thích rõ hơn được không?

Trần Hồng Phong viết 18:18 ngày 30/09/2018

printf("%c: %d\n",i,tree[i].f);

i là biến kiểu int nếu muốn in ra số bạn dùng %d. Do bạn dùng định dạng %c cho i nên nó sẽ in ra kí tự ứng với mã ASCII i

Bài liên quan
0