日期:2014-05-16  浏览次数:20931 次

Linux文件写操作,出现乱码
我现在向一个txt文件写入一些数据,出现乱码。求指导~~

代码:
C/C++ code
#include <unistd.h>
#include <stdio.h>
#include <sys/mman.h>
#include <fcntl.h>
#include <stdlib.h>

typedef struct{
    int integer;
    char string[24];
}RECORD;

#define NRECORDS (100)

int main()
{
    RECORD record,*mapped;
    int i,f;
    FILE *fp;
    
    fp = fopen("records.txt","w+");
    for(i = 0;i < NRECORDS;++i)
    {
        record.integer = i;
        sprintf(record.string,"RECORD-%d",i);
        fwrite(&record,sizeof(record),1,fp);
            
    }
    fclose(fp);
}


运行后打开records.tx出现乱码:


新手上路,求指教~~

------解决方案--------------------
很正常, 计算机也不知道哪些字节是字符, 哪些字节不是字符, 你一个Int,后边接一个字符串, 显示成啥样都是可能的。
------解决方案--------------------
用fprintf之类的函数试试
------解决方案--------------------
sprintf(record.string,"RECORD-%d",i);
往string里写了多少字符?string长度是24哎...