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