Dung lượng lưu trữ trong xâu kí tự trong C

Ai hiểu kĩ phần Xâu Kí Tự thì giúp em với
Em có thắc mắc là khi mình khai báo xâu kí tự char a[10] thì dung lượng lưu trữ xâu đó là 11 hay 10 ạ? lưu trữ kí tự NULL ở trong xâu hay thế nào ạ?

Khi khai báo một chuỗi char a[] thì bạn nên khởi tạo rỗng luôn. VD: char a[10] = “”; char a[10] dĩ nhiên chỉ lưu được tối đa 10 kí tự, và nhất thiết bạn phải có một giá trị NULL để đánh dấu hết chuỗi

sao cô giáo mình chữa là 11 :frowning:

trong giáo trình bọn mình ghi là xâu kí tự “A” được lưu trữ trong 2 bytes gồm cả kí tự NULL nên mình rất thắc mắc. mình với bạn mình không biết ai đúng ai sai luôn. mỗi người 1 kiểu.

1 Like

10 kí tự thôi bạn ơi, bạn mở visual hay codeblock lên thử là biết mà :smiley:
‘A’+NULL=2byte

2 Likes

cảm ơn bạn nha :)))))))))))))))))))))))

Mình nghĩ là 1 ký tự kết thúc chuỗi \0, còn lại chỉ lưu trữ được 9 ký tự thôi bạn.
Chạy thử hai đoạn code này thì bạn sẽ rõ thôi là 9 hay 10 hay 11.

#include<stdio.h>
int main(){
	char chuoi[10]="muoi phan";
	printf("chuoi < %s > co do dai bang %d.",chuoi,strlen(chuoi));
	return 0;
}
#include<stdio.h>
int main(){
	char chuoi[10]="muoi phan1";
	printf("chuoi < %s > co do dai bang %d.",chuoi,strlen(chuoi));
	return 0;
}
1 Like

Ký tự đc lưu 2byte là tính luôn dấu phải ko mn.ví dụ: a’

/0 cũng là một kí tự nhưng nó không in ra được thôi :smiley: ví dụ như bạn gán trực tiếp cho chuỗi 10 phần tử bằng 1 chữ cái thì khi bạn in ra thì nó sẽ in ra 10 phần tử :smiley: nói chung là bạn có thể lưu được 10 kí tự luôn ấy

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