c++中的\0問題


#include<stdio.h>
int main() {
	char str1[8] = { 'd','e','d','g','o' };
	char str2[5] = { 'd','e','d','g','o' };
	printf("%d", sizeof(str1));
	printf("%d", sizeof(str1));
	return 0;
}

對於字符串數組,當定義時直接對其賦值,無論元素是否占滿數組,其儲存的字符個數都是數組的元素個數,未占滿時會自動用\0補全

#include<stdio.h>
#include<string.h>
int main() {
	char str[14];
	for (int i = 0; i < 5; i++) {
		str[i] = getchar();
	}
	puts(str);
	return 0;
}

輸出會亂碼

使用getchar要在輸入的每個字符串后面加\0,例如

#include<stdio.h>
#include<string.h>
int main() {
	char str[14];
	for (int i = 0; i < 5; i++) {
		str[i] = getchar();
	}
	str[5] = '\0';
	puts(str);
	return 0;
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM