私のコードは、指定されたテストケース上の文字列内の単語を逆転させるはずでしたが、最後の文字列まで、そしてテストケースの入力文字列が繰り返されるまで読み込まれた前の文字列と連結します。私は単純な方法で実装しようとしました
INPUT 3:私は
#include<stdio.h>
#include<string.h>
#include<ctype.h>
#define MAXCHARS 1000
#define MAXWORDS 1000
typedef char word_t[MAXCHARS+1];
int getwords(char W[]);
int main(int argc,char*argv[]){
word_t oneword, all_words[MAXWORDS];
int num_words = 0,value;
int testcases,i,n;
scanf("%d",&testcases);
getchar();
for(i =1;i<=testcases;i++){
while((value = getwords(oneword))!=1){
strcpy(all_words[num_words],oneword);
num_words++;
/*if(value ==1){
value = 2;
}*/
}
printf("Case #%d:",i);
for(n=num_words;n>=0;n--){
printf("%s",all_words[n]);
}
printf("\n");
}
return 0;
}
int getwords(char W[]){
int c,len =0,NewSpaceOrline =0;
while((c=getchar())!='\n'){
W[len] = c;
len++;
if(c == ' '){
W[len] = '\0';
NewSpaceOrline =0;
return NewSpaceOrline;
}
}
W[len] ='\0';
NewSpaceOrline =1;
return NewSpaceOrline;
}
質問を再入力してください – piyushj
'strcpy(all_words [num_words]、oneword);を追加してください。 strcat(all_words [num_words]、 ""); 'whileループの後。 – BLUEPIXY