初心者です。
すいません。宿題なんですけど、色々やっても動きません。
何処を改善すればいいかお願いします。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h> /*strcat関数で必要 */
int main()
{
srand((unsigned) time(NULL)); /* 乱数系列の変更 */
int i, j;
FILE *fp;
char bun[256], file[33][30];
fp = fopen("test2.txt", "r"); /* ここにファイル名を入れる */
if(fp == NULL) {
perror("ファイルをオープンできません\n");
return -1;
}
i = 0;
while(fscanf(fp, "%s", &file[0]) != EOF) {
i++;
}
fclose(fp);
fp = fopen("test3.txt", "w"); /* ここに書き込むファイルの名前を入れる */
if(fp == NULL) {
perror("ファイルをオープンできません\n");
return -1;
}
j = 0;
while(j < 20) {
i = 0;
i = rand()%11;
strcpy(bun, &file[0]);
strcat(bun, "は");
i += (12 - i);
i += rand()%9;
strcat(bun, &file[0]);
i += (22 - i);
i += rand()%10;
strcat(bun, &file[0]);
strcat(bun, "\n");
fprintf(fp, bun);
j++;
}
fclose(fp);
return 0;
}
無題
Re:無題
勘違いしてそうな場所
i = rand()%11;
// i は 0-10(0-11ではありません)
i += (12 - i);
// これはまとめると i = 12 になります
i += rand()%9;
// i は 12-20
i += (22 - i);
// これも i = 22 のことです
i += rand()%10;
// i は 22-31
これではfile[ 11 ]とfile[ 21 ] と file[ 32 ]は選択されません
がやりたいことだと考えましたが
i = rand()%11;
// i は 0-10(0-11ではありません)
i += (12 - i);
// これはまとめると i = 12 になります
i += rand()%9;
// i は 12-20
i += (22 - i);
// これも i = 22 のことです
i += rand()%10;
// i は 22-31
これではfile[ 11 ]とfile[ 21 ] と file[ 32 ]は選択されません
i = rand()%12; strcpy(bun, &file[0]); strcat(bun, "は"); i = 12 + rand()%10; strcat(bun, &file[0]); i = 22 + rand()%11; strcat(bun, &file[0]); strcat(bun, "\n"); fprintf(fp, bun);
がやりたいことだと考えましたが