文字列は0(ヌル文字)で終わる

  • これは問題ないが
#include <stdio.h>
int main(void){
  char str[4] = "aaa";
  printf("%s", str);
  return 0;
}
  • これはエラーとなる
#include <stdio.h>
int main(void){
  char str[4] = "aaaa";
  printf("%s", str);
  return 0;
}
  • *strが指し示すのは*(str + 0)なので%sが要求するNULL文字が来ないのでエラーとなる。
#include <stdio.h>

int main(){
	char *str1 = "hoge";
	printf("%c\n", *str1);#「h」を表示
	return 0;
}