#include #include #define NWORD 7 int main() { char str2[NWORD][20]; char newstr[120]; int i, len, pos; printf( "Input %d words: \n", NWORD ); /*文字列の入力はここに*/ for( i = 0; i < NWORD; i++ ){ scanf("%s", str2[i]); } /*文字列の入力はここに*/ pos = 0; for( i = 0; i < NWORD; 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", strlen(newstr)); /* 文字数を表示 */ /* strlen関数の(戻り値の)型はsize_tである。size_t型はint型などとは異なる特別な整数型の一種 であり、多くの環境でint型より桁の大きな値を扱えるようになっている。このためprintfでの書式指定は %ldとするのが正しい。ただ、現在の会津大学の環境では%dでコンパイル、実行可能である(警告がでる場合がある) */ return 0; }