所以我对编程完全陌生(我已经学习了3天),我发现自己面临一个问题,我根本不知道如何解决。 我想要这个程序给我从0到基数36中的特定数字的每个组合。当数量仅为大约50000左右时,这很容易。但我的目标是提取实际的单词(也有数字),如果我试着获得5个字符的单词,终端将开始覆盖前面的单词(没有帮助,我想要所有这些单词)。 所以我认为我应该寻找一种方法将所有内容转换为txt文件,并且存在我的问题:我不知道如何...对于长文本感到抱歉但我想准确地解释我的问题想要得到。谢谢你的帮助。
int main() {
int dec, j, i, q, r, k;
char val[80];
printf("Enter a decimal number: ");
scanf("%d", &dec);
for (k = 0; k <= dec; k++) { /*repeat for all possible combinations*/
q = k;
for (i = 1; q != 0; i++) { /*convert decimal number to value for base 36*/
r = q % 36;
if (r < 10)
r = r + 48;
else
r = r + 55;
val[i] = r;
q = q / 36;
}
for (j = i - 1; j > 0; j--) { /*print every single value*/
printf("%c", val[j]);
}
printf(" "); /*add spaces because why not*/
}
return (0);
}
答案 0 :(得分:0)
创建一个文件,然后你可以使用fprintf()而不是printf两者之间的唯一区别是你需要将文件指定为参数
FILE *myFile = fopen("file.txt", "w"); //"w" erase previous content, "a" appends
If(myFile == NULL) {printf("Error in openning file\n"); exit(1);}
fprintf(myFile, "some integer : %d\n", myInteger); // same as printf my specify file pointer name in first argument
fclose(myFile); //dont forget to close the file
答案 1 :(得分:0)
一些可能有帮助的观察结果:
首先是type
相关:
在您的声明中,您将创建以下内容:
int dec, j, i, q, r, k;
char val[80];
然后你做了作业:
val[i] = r;//assigning an int to a char, dangerous
虽然r
的类型为int
,但 range (通常)为-2,147,483,648到2,147,483,647,
val[i]
类型为char
,范围(通常)仅为-128到127.
因此,您可能会遇到溢出,从而导致意外结果。
最直接的解决方案是对两个变量使用相同的类型。选择int
或char
,但不要同时选择。
另一个已被@Nasim正确解决。使用file
- {strong> fprintf() 的printf()
版本。如链接所示,fprintf()
的原型是:
int fprintf( FILE *stream, const char *format [, argument ]...);
用法示例:
FILE *fp = fopen(".\somefile.txt", "w");//create a pointer to a FILE
if(fp)//if the FILE was successfully created, write to it...
{
// some of your previous code...
for (j = i - 1; j > 0; j--)
{ /*print every single value*/
fprintf(fp, "%c", val[j]);//if val is typed as char
//OR
fprintf(fp, "%d", val[j]);//if val is typed as int
}
fclose(fp);
}
最后,有许多方法可以执行基本转换。一些 more complicated 而不是 others 。