私はちょうどstrcpy()
を私の脳に封印するためにこれを作った。そして、ブラケットを空白のままにしておくと、コンパイラは初期化子が必要であるとか、コンパイルするのに必要な値が必要だと気づいた。しかし、私は括弧内に任意の値を入れることができ、それはまだコンパイルされます。 0であっても...しかし、strcpy()
関数は、文字列が宣言されている文字列終端文字を追加すると、なぜかっこ内にプレースホルダを置く必要がありますか?以下Strcpy()配列宣言?
コード...
#include <stdio.h>
#include <string.h>
main()
{
char yearFirst[0]; <------ HOW DOES THIS still EXECUTE??
char yearSecond[6];
char month[5];
/* when declaring strcpy function, place each copied string before.
their desired print function.
or else the print function will print thr same strcpy for each print
function proceeding it.
ex.
strcpy(yearFirst, "Sept., Oct., Nov., Dec., Jan.");
strcpy(yearSecond, "Mar., Apr., May., Jun. Jul., Aug.");
followed by:
printf("These months have 1-31 days: %s\n\n", yearFirst)
printf("These months have 1-30 days: %s\n\n", yearSecond);
output will equal both statements saying
"These months have 1-31: sept oct ...."
"these months have 1-30: sept oct....."
*/
strcpy(yearFirst, "Sept., Oct., Nov., Dec., Jan.");
printf("These months have 1-31 days: %s\n\n", yearFirst);
strcpy(yearSecond, "Mar., Apr., May., Jun. Jul., Aug.");
printf("These months have 1-30 days: %s\n\n", yearSecond);
strcpy(month, "Feb.");
printf("%s has 1-28 days\n", month);
return 0;
}
少なくともC99、好ましくはC11にコーディングする必要があり、 'main()'で明示的な戻り値の型を使用する必要があることに注意してください。 C99は欠落している戻り値の型をサポートしなくなりました。 –