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;
}
posted @ 2020-03-09 15:31  学呀学呀学  阅读(1431)  评论(0)    收藏  举报