1.txt文件读
json文件
{
"name": "mculover666",
"age": 22,
"weight": 55.5,
"address": {
"country": "China",
"zip-code": 111111
},
"skill": ["C", "Java", "Python"],
"student": false
}
ultraedit的16进制显示
读写程序
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
FILE *fp= NULL;
unsigned int file_len;
int num;
char *p;
if( NULL == (fp = fopen("json.txt","r")))
{
printf( "Problem opening the file\n" );
}
//得到文件的长度
fseek(fp,0,SEEK_END);
file_len = ftell(fp);
/* int fd;
file_len = lseek(fd,0,SEEK_END); */
printf("the file len is %d\n",file_len);
char *buff = (char*)malloc(file_len);
fseek(fp,0,SEEK_SET);
fread(buff,sizeof(char),file_len, fp);
buff[file_len] = '\0';//txt文件结束为}或者或者回车换行,需要加上字符串结尾标志0
p = buff;
for(num = 0 ;num < file_len+1 ;num++)//在linux中,此处file_len+2得到的最后一位虽然也是0,但是不严谨,必须使用buff[file_len] = '\0';语句加上字符串的结尾标志
{
printf("%2X ",*p);
p++;
}//{的ASCII码7B,}的ASCII码是7D,json文件结尾还有0D 0A(回车,换行)
printf("\n%s\n",buff);
fclose(fp);
free(buff);
return 0;
}
linux运行结果
windows运行结果
注意:Windows和Linux存在换行的区别
疑问:Dos下换行应该是 \r\n(0D0A) ,Linux下应该是 \n(0A) ,上述结果恰好相反?