首页 > 解决方案 > 当行超过 100 个字符时,fprintf 会生成一个 utf-16 文本文件

问题描述

我正在尝试学习如何在 C 中处理文件,此代码的目标是将用户指定的一定数量的小写字母写入每次程序运行时重新生成的文本文件中。这是在 Visual Studio Community 2019 中完成的,以防万一。

我正在努力解决的是,如果我在同一行上放置超过 100 个字符(也就是用户输入大于 49 的数字),则生成的 .txt 文件以 utf-16 而不是 utf-8 编码,这就是我添加的原因每 50 次 for 循环迭代两个换行符。

假设我需要在每一行上写超过 100 个字符,无论出于何种原因,而不是将它们放在一个字符串中,是否有解决方法?为什么它首先发生?

#include <stdio.h>

#include <stdlib.h>

#include <time.h>

int main() {
    char* file = "test.txt";
    FILE* fp = fopen(file, "w");
    int Min = 97;
    int Max = 122;

    int i, n, newline = 1;

    if (fp == NULL) {
        printf("%s : couldn't be created", file);
    }
    else printf("%s : created successfully\n", file);

    printf("How many characters do you want to generate? : ");
    scanf("%d", &n);

    for (i = 1; i <= n; i++) {
        char letter = rand() % (Max + 1 - Min) + Min;
        fprintf(fp, "%c ",(char )letter);
        if (i == newline*50) {
            fprintf(fp, "\n\n");
            newline++;
        }
    }

    fclose(fp);
    system("pause");
    return 0;
}

标签: cvisual-studio

解决方案


推荐阅读