#include<stdio.h>
#include<stdlib.h>
#include<string.h>
main()
{
char str[5]={'\0'};
printf("Initial length before passing = %ld\n",strlen(str));
input(str);
printf("Received string = %s\n",str);
printf("Length after getting input(calling function) = %ld\n",sizeof(str));
}
input(char * buffer)
{
puts("Enter something: ");
printf("Initial length after passing = %ld\n",strlen(buffer));
if ( fgets(buffer, sizeof(buffer), stdin) == NULL )
return -1;
else
{
printf("Length after getting input(called function)= %ld\n",strlen(buffer));
return 0;
}
}
出力 1
Initial length before passing = 0
Enter something:
Initial length after passing = 0
hello
Length after getting input(called function)= 6
Received string = hello
Length after getting input(calling function) = 5
アウトプット 2
Initial length before passing = 0
Enter something:
Initial length after passing = 0
helloooooo
Length after getting input(called function)= 7
Received string = hellooo
Length after getting input(calling function) = 5
異なる入力をしたときに異なる長さを出力するのはなぜですか?
- 出力 1 & 2 で、5 文字だけにスペースを割り当てたのに、最初の長さが 6 なのはなぜですか?
- 出力 1 と出力 2 の両方で、渡す前と渡した後で文字列の長さが異なるのはなぜですか?
- 出力 2 で、割り当てたスペースが少ないのに、なぜ「入力 (関数と呼ばれる) を取得した後の長さ = 7」になるのですか?