void getS(char *fileName){
FILE *src;
if((src = fopen(fileName, "r")) == NULL){
printf("%s %s %s", "Cannot open file ", fileName, ". The program is now ending.");
exit(-1);
}
//char *get = " ";
int c = 1;
char ch = 'x';
while(ch!=EOF) {
ch = fgetc(src);
if(ch == '\n') c++;
}
fseek(src, 0, SEEK_SET);
int random = rand() % c;
int i = 0;
for(i = 0; i < random; i++){
while(ch != '\n'){
ch = fgetc(src);
}
}
do{
ch = fgetc(src);
if(ch != '\n' && ch != EOF){
printf("%c", ch);
}
}while(ch != '\n' && ch != EOF);
printf("%c", '\n');
fclose(src);
}
したがって、これはファイルを取得し、各単語が改行で区切られている場合にファイル内のランダムな単語を出力する私の関数です。
質問 1: 乱数が最初の 2 語よりも優先されるのはなぜですか?
質問 2: printf("%c", '\n'); を実行せずにこの関数を複数回使用できるようにするにはどうすればよいですか? 最後にそれがない場合、前の関数呼び出しは古い関数を上書きするだけだからです。
前もって感謝します。今日は少し質問してきました。スタックオーバーフローのすべての助けに感謝します! :)
srand(time(NULL)); を使用した PS