将结果传输到txt文件C.

时间:2015-12-25 01:30:53

标签: c file combinations word

所以我对编程完全陌生(我已经学习了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);
}

2 个答案:

答案 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.

因此,您可能会遇到溢出,从而导致意外结果。 最直接的解决方案是对两个变量使用相同的类型。选择intchar,但不要同时选择。

另一个已被@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