このプログラムで文字列を出力したいのですが、出力に完全な単語が表示されません(コンソールで)。この順序で単語があります:冠詞(例: "the"、"a"、"one"、"some"、"any")、名詞、前置詞、冠詞、名詞.
関数を使用せずにその文字列を印刷すると、正常に動作します。しかし、関数を使用すると、出力が正しくありません。
長い間考えてきましたが、このような動作の理由がわかりません。このプログラムの何が問題なのか教えてください。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
int printSentence(int number, const char *article, const char *noun, const char *verb, const char *preposition);
int main(){
int number;
const char *article[5] = {"the", "a", "one", "some", "any"};
const char *noun[5] = {"boy", "girl", "dog", "town", "car"};
const char *verb[5] = {"drove", "jumped", "ran", "walked", "skipped"};
const char *preposition[5] = {"to", "from", "over", "on", "under"};
srand((unsigned)time(NULL));
/* works properly */
printf("%s ", article[0 + rand() % 4] );
printf("%s ", noun[0 + rand() % 4] );
printf("%s ", verb[0 + rand() % 4] );
printf("%s ", preposition[0 + rand() % 4] );
printf("%s ", article[0 + rand() % 4] );
printf("%s\n", noun[0 + rand() % 4] );
printf("And now I use function:\n")
printf("Enter the number of sentences to generate (enter 1): \n");
scanf("%d", &number);
/* won't work properly */
printSentence(number, *article, *noun, *verb, *preposition);
return 0;
}
int printSentence(int num, const char *a, const char *n, const char *v, const char *p){
int i;
for (i = 0; i < num; i++){
printf("%s ", &a[0 + rand() % 4] );
printf("%s ", &n[0 + rand() % 4] );
printf("%s ", &v[0 + rand() % 4] );
printf("%s ", &p[0 + rand() % 4] );
printf("%s ", &a[0 + rand() % 4] );
printf("%s\n", &n[0 + rand() % 4] );
}
return 0;
}
前:
問題を解決した後: