#include #include #define N_WORD 9 int main() { char str2[N_WORD][20]; char newstr[180]; int i, len, pos; printf( "Input %d words: \n", N_WORD ); /*文字列の入力はここに*/ for( i = 0; i < N_WORD; i++ ){ scanf("%s", str2[i]); } /*文字列の入力はここに*/ pos = 0; for( i = 0; i < N_WORD; i++ ){ len = strlen( str2[i] ); strcpy( &newstr[pos], str2[i] ); pos += len; /* 次の文字列の入力位置 */ strcpy( &newstr[pos], " " ); /* 単語間にスペースを入れる */ /* 別解 newstr[pos] = ' '; newstr[pos+1] = '\0'; */ pos += 1; /* スペースの分、1文字ずらす */ } newstr[pos-1] = '\0'; /* 最後はスペース不要なので、ヌル文字に変更して文字列を終了させた */ /* ループ内にif文を入れ、最後にスペースが入らないようにするのでも良い */ printf("%s\n", newstr); /* 新しい文字列全体を表示 */ printf("Total: %ld characters\n", (long) strlen(newstr)); /* 文字数を表示 */ /* strlen関数の(戻り値の)型はsize_tである。size_t型はint型などとは異なる特別な整数型の一種 であり、多くの環境でint型より桁の大きな値を扱えるようになっている。 */ return 0; }