C 将fprintf转换为.txt文件会给我‰‰‰‰‱‱‱‱‱‱‱;而不是0 0 1 1 1 1

C 将fprintf转换为.txt文件会给我‰‰‰‰‱‱‱‱‱‱‱;而不是0 0 1 1 1 1,c,C,这是我第一次尝试用c写入文件 造成问题的部分如下所示: for (j = 0; j < num_probs; j++) { fprintf(dataMy, "%i ", data_my[j]); } 而不是 0 0 0 0 1 1 1 1 1 1 1 在我的.txt文件中 如果我将fprintf(dataMy,“%I”,data_my[j])中的%I更改为%2i,每次打印2个字符,但由于我只使用0或1个字符(每个字符),其中一个是空格键。或者我可以编写%I,这也可以,但我想在不

这是我第一次尝试用
c
写入文件

造成问题的部分如下所示:

for (j = 0; j < num_probs; j++) {
    fprintf(dataMy, "%i ", data_my[j]);
}
而不是

0 0 0 0 1 1 1 1 1 1 1
在我的.txt文件中

如果我将
fprintf(dataMy,“%I”,data_my[j])
中的
%I
更改为
%2i
,每次打印2个字符,但由于我只使用0或1个字符(每个字符),其中一个是空格键。或者我可以编写
%I
,这也可以,但我想在不使用空格键的情况下启动.txt文件

以下是我的完整程序:

#include <stdio.h>
#include <stdlib.h>
#include <Windows.h>

#define num_annos    523
#define num_probs    1910
#define meine_zeile  59

int data[num_annos][num_probs];

void main() {    
    int i, j;
    FILE *f = NULL;
    FILE *dataMy = NULL;

    errno_t err;
    int data_my[num_probs];

    if ((err = fopen_s(&f, "H:\\Hochschule\\Informatik\\UebungenIII\\Daten für A6_15WS_all\\datamatrix_v5_1.txt", "r")) != 0) {
        printf("The file was not opened\n");
    } else {
        printf("Datei erfolgreich geoeffnet!\n\n");

        for (i = 0; i < num_annos; i++) {
            for (j = 0; j < num_probs; j++) {
                fscanf_s(f, "%i", &data[i][j]);
                printf("%2i", data[i][j]);
            }
            printf("\n");
        }
        fclose(f);
        printf("\n\nEinlesen erfolgreich.\n");
    }

    for (j = 0; j < num_probs; j++) {
        data_my[j] = data[meine_zeile-1][j];
    }

    if ((err = fopen_s(&dataMy, "H:\\Hochschule\\Informatik\\UebungenIII\\Daten für A6_15WS_all\\data_my.txt", "w")) != 0) {
        printf("The file was not opened\n");
    } else {            
        for (j = 0; j < num_probs; j++) {
            fprintf(dataMy, "%i ", data_my[j]);
            printf("%i ", data_my[j]);
        }
        fclose(dataMy);
    }
    getch();
}
#包括
#包括
#包括
#定义num_annos 523
#定义num_probs 1910
#定义meine_zeile 59
int数据[num_annos][num_probs];
void main(){
int i,j;
文件*f=NULL;
文件*dataMy=NULL;
错误没有错误;
int data_my[num_probs];
如果((err=fopen_s(&f,“H:\\Hochschule\\Informatik\\UebungenIII\\Daten für A6_15WS_all\\datamatrix_v5_1.txt”,“r”)!=0){
printf(“文件未打开\n”);
}否则{
printf(“Datei erfolgreich geoeffnet!\n\n”);
对于(i=0;i

它从
datamatrix_v5_1.txt读入0和1(该文件仅填充了0 1 0 1 0 1…以此类推),将这些行中的一行保存到数组数据中,这就是我要打印到
数据中的.txt

字符‰和-,分别具有Unicode码点
0x2030
0x2031
。编码为UTF-16,然后解释为ASCII,它们是
'0'
'1'
'0'
'1'
,具体取决于字节顺序。似乎您的ASCII输出在某种程度上被解释为UTF-16


如果在宽字符流上执行按字节输出,则可能发生这种情况。这也可能是因为编辑器的编码检测例程出现故障(参见)。编辑文件时尝试手动设置文本编码或使用其他编辑器。

字符‰和‱分别具有Unicode码点
0x2030
0x2031
。编码为UTF-16,然后解释为ASCII,它们是
'0'
'1'
'0'
'1'
,具体取决于字节顺序。似乎您的ASCII输出在某种程度上被解释为UTF-16


如果在宽字符流上执行按字节输出,则可能发生这种情况。这也可能是因为编辑器的编码检测例程出现故障(参见)。在编辑文件时,尝试手动设置文本编码或使用不同的编辑器。

请提供一个允许每个人重现您描述的问题的编辑器。这真的很奇怪。看起来有点像文本被解释为UTF-16或类似的东西。您可能以二进制模式打开了文件,并写入了16位整数。我试图在循环后添加一个\n,但这并不能解决问题,如果我在循环前打印一个\n,那么我在顶部有一个空行,但是我得到了0和1。在这一点上,Thx很多@every1谁试图帮助,特别是对你,请提供一个能让每个人重现你描述的问题的例子。这真的很奇怪。看起来有点像文本被解释为UTF-16或类似的东西。您可能以二进制模式打开了文件,并写入了16位整数。我试图在循环后添加一个\n,但这并不能解决问题,如果我在循环前打印一个\n,那么我在顶部有一个空行,但我得到了0和1。在这一点上,Thx非常多@每个试图帮助的人,特别是对你的细胞诊断。但是,该程序不是ASCII。可能是Windows-1250或Windows-1252。@TomBlodget不重要,1252是ASCII的扩展。非常好的诊断。但是,该程序不是ASCII。可能是Windows-1250或Windows-1252。@TomBlodget不重要,1252是ASCII的扩展。
#include <stdio.h>
#include <stdlib.h>
#include <Windows.h>

#define num_annos    523
#define num_probs    1910
#define meine_zeile  59

int data[num_annos][num_probs];

void main() {    
    int i, j;
    FILE *f = NULL;
    FILE *dataMy = NULL;

    errno_t err;
    int data_my[num_probs];

    if ((err = fopen_s(&f, "H:\\Hochschule\\Informatik\\UebungenIII\\Daten für A6_15WS_all\\datamatrix_v5_1.txt", "r")) != 0) {
        printf("The file was not opened\n");
    } else {
        printf("Datei erfolgreich geoeffnet!\n\n");

        for (i = 0; i < num_annos; i++) {
            for (j = 0; j < num_probs; j++) {
                fscanf_s(f, "%i", &data[i][j]);
                printf("%2i", data[i][j]);
            }
            printf("\n");
        }
        fclose(f);
        printf("\n\nEinlesen erfolgreich.\n");
    }

    for (j = 0; j < num_probs; j++) {
        data_my[j] = data[meine_zeile-1][j];
    }

    if ((err = fopen_s(&dataMy, "H:\\Hochschule\\Informatik\\UebungenIII\\Daten für A6_15WS_all\\data_my.txt", "w")) != 0) {
        printf("The file was not opened\n");
    } else {            
        for (j = 0; j < num_probs; j++) {
            fprintf(dataMy, "%i ", data_my[j]);
            printf("%i ", data_my[j]);
        }
        fclose(dataMy);
    }
    getch();
}