我开始用C语言做事,因为它引起了很多关注这种语言。 我做了一个带有数字和字母混合的单词生成器。 单词长度为8,包含特定字符。
我请求帮助,因为我已经完成了正确生成单词的代码,每生成20,000个单词会保存txt中的最后一个单词,当你启动它时,它会检测到该单词并在控制台中显示它。
我喜欢做的是获取最后一个单词并将其发送到循环循环,如果有任何单词,则单词的开头,而不是开头。
这里有代码,并提前感谢任何可以提供帮助的人。
#include <stdio.h>
#include <stdlib.h>
int main(int main, char *argv[]){
int a,b,c,d,e,f,g,h;
char var0[] = {'1','A','2','B','3','C','4','D','5','E','6'};
char var1[] = {'1','A','2','B','3','C','4','D','5','E','6'};
char var2[] = {'1','A','2','B','3','C','4','D','5','E','6'};
char var3[] = {'1','A','2','B','3','C','4','D','5','E','6'};
char var4[] = {'1','A','2','B','3','C','4','D','5','E','6'};
char var5[] = {'1','A','2','B','3','C','4','D','5','E','6'};
char var6[] = {'1','A','2','B','3','C','4','D','5','E','6'};
char var7[] = {'1','A','2','B','3','C','4','D','5','E','6'};
char caracteres[9];
FILE *fp, *sesion;
sesion = fopen("Save_Sesion.txt","r");
if (sesion == NULL){
printf("\nNo Sesion.\n");
}
else{
printf("\nLast key was:\n\n");
while (feof(sesion) == 0){
fgets(caracteres,9,sesion);
printf("%s",caracteres);
}
}
printf("Press any key to continue\n");
getchar();
for( a=0; a <= 10; a++){
for( b=0; b <= 10; b++){
for( c=0; c <= 10; c++){
for( d=0; d <= 10; d++){
for( e=0; e <= 10; e++){
for( f=0; f <= 10; f++){
for( g=0; g <= 10; g++){
for( h=0; h <= 10; h++){
printf("%c%c%c%c%c%c%c%c\n",var0[a],var1[b],var2[c],var3[d],var4[e],var5[f],var6[g],var7[h]);
}
}
}
}
fp = fopen("Save_Sesion.txt","w");
fprintf(fp, "%c%c%c%c%c%c%c%c\n",var0[a],var1[b],var2[c],var3[d],var4[e],var5[f],var6[g],var7[h]);
fclose(fp);
}
}
}
}
return 0;
}
答案 0 :(得分:1)
我注意到你的代码出现了一些问题..
在14641次迭代后,您正在写入文件Save_sesion.txt,这正好是11 ^ 4。 for循环从0迭代到10,即11次迭代。
当您写入文件时,循环可变量,e,f,g和h都将大于10,因此您将在第11个位置索引到数组var4,var5,var6和var7,这将导致数组索引超出范围。