単語逆順コピープログラム
入力された文字列を逆から表示するというプログラムを作成しているのですがなかなかうまくいきません。僕の作成したプログラムを載せておくので間違いの指摘をお願いします。
出力例(一部)
入力文字列:[ pen. a is This ]
出力文字列:[This is a pen.]
---------コードここから---------
#include <stdio.h>
#include <string.h>
/* マクロの定義 */
#define BUF 1024
int main(void){
char in[BUF]; /* 入力された文字列を保存する */
char out[BUF]; /* input の内容を単語逆順にして保存する */
int wordcount = 0; /* 単語数 */
char *in_ptr, *out_ptr; /* それぞれの文字列の文字を指すポインタ */
int wsp[128], wep[128]; /* 単語の先頭の添え字と単語末の添え字を保存する配列 */
int i, j;
printf("入力された英単語列を単語逆順にします\n");
printf("入力:");
fgets(in, sizeof(in), stdin);
sscanf(in, "%c", &in);
/* \nを\0に書き換える */
in_ptr = in + strlen(in) - 1;
*in_ptr = '\0';
/* 単語数カウント */
printf("文字数のカウント開始\n");
in_ptr = in;
if(*in_ptr != ' '){
wordcount++;
}
for(in_ptr = in; *in_ptr != '\0'; in_ptr++){
if(*in_ptr != ' ' && *(in_ptr - 1) == ' '){
wordcount++;
}
}
printf("文字数のカウント終了: %d単語\n", wordcount);
printf("\n単語逆順処理開始\n");
for(i = 0; i < wordcount; i++){
for(in_ptr = in; *in_ptr != '\0'; in_ptr++){
if(*in_ptr != ' ' && *(in_ptr - 1) == ' '){
wsp[i] = *in_ptr;
}
if((*in_ptr - 1) != ' ' && (*in_ptr == ' ' || *in_ptr == '\0')){
wep[i] = *in_ptr;
}
}
}
out_ptr = out;
for(i = wordcount - 1; i <= 0; i--){
for(*in_ptr = wsp[i]; *in_ptr <= wep[i]; in_ptr++){
*out_ptr = *in_ptr;
out_ptr++;
}
}
printf("単語逆順処理終了\n");
printf("\n入力文字列:[%s]\n", in);
printf("出力文字列:[%s]", out);
return 0;
}
---------コードここまで---------