文件读取:读出来了一些乱码。

Ministarler 2013-10-17 09:01:14

#include <stdio.h>

int main(int argc, const char * argv[])
{
FILE *fp;
int ch;
fp = fopen("/Users/lichan/Desktop/name.rtf", "rb");

while ((ch=getc(fp)) != EOF)
{
putchar(ch);

}



return 0;
}



文件内容:lichgan isdadafadad

读出来的内容:
{\rtf1\ansi\ansicpg936\cocoartf1187\cocoasubrtf370
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
\paperw11900\paperh16840\margl1440\margr1440\vieww10800\viewh8400\viewkind0
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardirnatural

\f0\fs24 \cf0 lichgan isdadafadad}

请问这是怎么回事呢?
...全文
635 18 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
ForestDB 2013-10-17
  • 打赏
  • 举报
回复
http://webdesign.about.com/od/textedit/a/aa122006.htm Change the format to plain text TextEdit defaults to a rich text format, so you need to switch it to plain text to write HTML Open the Format tab Choose "Make Plain Text" You can also hit Shift-Apple-T to switch to plain text
Ministarler 2013-10-17
  • 打赏
  • 举报
回复
引用 13 楼 ForestDB 的回复:
当然有啊 你还能截图?
等我下午去机房吧 ,在这里是win的
ForestDB 2013-10-17
  • 打赏
  • 举报
回复
当然有啊 你还能截图?
Ministarler 2013-10-17
  • 打赏
  • 举报
回复
引用 11 楼 ForestDB 的回复:
打开文件另存为“纯文本文件”。
在 mac中没有这个纯文本文件
ForestDB 2013-10-17
  • 打赏
  • 举报
回复
打开文件另存为“纯文本文件”。
Ministarler 2013-10-17
  • 打赏
  • 举报
回复
引用 8 楼 ForestDB 的回复:
rtf的内容本来就是 {\rtf1\ansi\ansicpg936\cocoartf1187\cocoasubrtf370 ... 这样的 可以将rtf用文本编辑器打开看。
看 ,能看到。但是无法去掉
Ministarler 2013-10-17
  • 打赏
  • 举报
回复
引用 7 楼 turingo 的回复:
纯文本文件是不可能的。 [quote=引用 6 楼 lc10915819 的回复:] [quote=引用 2 楼 turingo 的回复:] rtf文件本身就包含许多格式信息,比如字体颜色表格什么的,不是纯文本文件,直接读有乱码很正常。 [quote=引用 楼主 lc10915819 的回复:]

#include <stdio.h>

int main(int argc, const char * argv[])
{
    FILE *fp;
    int ch;
    fp = fopen("/Users/lichan/Desktop/name.rtf", "rb");
        
        while ((ch=getc(fp)) != EOF)
        {
            putchar(ch);

        }
        

    
    return 0;
}
   
文件内容:lichgan isdadafadad 读出来的内容: {\rtf1\ansi\ansicpg936\cocoartf1187\cocoasubrtf370 {\fonttbl\f0\fswiss\fcharset0 Helvetica;} {\colortbl;\red255\green255\blue255;} \paperw11900\paperh16840\margl1440\margr1440\vieww10800\viewh8400\viewkind0 \pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardirnatural \f0\fs24 \cf0 lichgan isdadafadad} 请问这是怎么回事呢?
[/quote] 而且我是用文本编辑,已经去掉了那些格式修饰符,但是还是能读出来[/quote][/quote] 哪有什么办法去掉这修饰么?
ForestDB 2013-10-17
  • 打赏
  • 举报
回复
rtf的内容本来就是 {\rtf1\ansi\ansicpg936\cocoartf1187\cocoasubrtf370 ... 这样的 可以将rtf用文本编辑器打开看。
图灵狗 2013-10-17
  • 打赏
  • 举报
回复
纯文本文件是不可能的。
引用 6 楼 lc10915819 的回复:
[quote=引用 2 楼 turingo 的回复:] rtf文件本身就包含许多格式信息,比如字体颜色表格什么的,不是纯文本文件,直接读有乱码很正常。 [quote=引用 楼主 lc10915819 的回复:]

#include <stdio.h>

int main(int argc, const char * argv[])
{
    FILE *fp;
    int ch;
    fp = fopen("/Users/lichan/Desktop/name.rtf", "rb");
        
        while ((ch=getc(fp)) != EOF)
        {
            putchar(ch);

        }
        

    
    return 0;
}
   
文件内容:lichgan isdadafadad 读出来的内容: {\rtf1\ansi\ansicpg936\cocoartf1187\cocoasubrtf370 {\fonttbl\f0\fswiss\fcharset0 Helvetica;} {\colortbl;\red255\green255\blue255;} \paperw11900\paperh16840\margl1440\margr1440\vieww10800\viewh8400\viewkind0 \pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardirnatural \f0\fs24 \cf0 lichgan isdadafadad} 请问这是怎么回事呢?
[/quote] 而且我是用文本编辑,已经去掉了那些格式修饰符,但是还是能读出来[/quote]
Ministarler 2013-10-17
  • 打赏
  • 举报
回复
引用 2 楼 turingo 的回复:
rtf文件本身就包含许多格式信息,比如字体颜色表格什么的,不是纯文本文件,直接读有乱码很正常。 [quote=引用 楼主 lc10915819 的回复:]

#include <stdio.h>

int main(int argc, const char * argv[])
{
    FILE *fp;
    int ch;
    fp = fopen("/Users/lichan/Desktop/name.rtf", "rb");
        
        while ((ch=getc(fp)) != EOF)
        {
            putchar(ch);

        }
        

    
    return 0;
}
   
文件内容:lichgan isdadafadad 读出来的内容: {\rtf1\ansi\ansicpg936\cocoartf1187\cocoasubrtf370 {\fonttbl\f0\fswiss\fcharset0 Helvetica;} {\colortbl;\red255\green255\blue255;} \paperw11900\paperh16840\margl1440\margr1440\vieww10800\viewh8400\viewkind0 \pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardirnatural \f0\fs24 \cf0 lichgan isdadafadad} 请问这是怎么回事呢?
[/quote] 而且我是用文本编辑,已经去掉了那些格式修饰符,但是还是能读出来
图灵狗 2013-10-17
  • 打赏
  • 举报
回复
直接改文件的后缀名?
引用 4 楼 lc10915819 的回复:
[quote=引用 2 楼 turingo 的回复:] rtf文件本身就包含许多格式信息,比如字体颜色表格什么的,不是纯文本文件,直接读有乱码很正常。 [quote=引用 楼主 lc10915819 的回复:]

#include <stdio.h>

int main(int argc, const char * argv[])
{
    FILE *fp;
    int ch;
    fp = fopen("/Users/lichan/Desktop/name.rtf", "rb");
        
        while ((ch=getc(fp)) != EOF)
        {
            putchar(ch);

        }
        

    
    return 0;
}
   
文件内容:lichgan isdadafadad 读出来的内容: {\rtf1\ansi\ansicpg936\cocoartf1187\cocoasubrtf370 {\fonttbl\f0\fswiss\fcharset0 Helvetica;} {\colortbl;\red255\green255\blue255;} \paperw11900\paperh16840\margl1440\margr1440\vieww10800\viewh8400\viewkind0 \pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardirnatural \f0\fs24 \cf0 lichgan isdadafadad} 请问这是怎么回事呢?
[/quote]
引用 2 楼 turingo 的回复:
rtf文件本身就包含许多格式信息,比如字体颜色表格什么的,不是纯文本文件,直接读有乱码很正常。 [quote=引用 楼主 lc10915819 的回复:]

#include <stdio.h>

int main(int argc, const char * argv[])
{
    FILE *fp;
    int ch;
    fp = fopen("/Users/lichan/Desktop/name.rtf", "rb");
        
        while ((ch=getc(fp)) != EOF)
        {
            putchar(ch);

        }
        

    
    return 0;
}
   
文件内容:lichgan isdadafadad 读出来的内容: {\rtf1\ansi\ansicpg936\cocoartf1187\cocoasubrtf370 {\fonttbl\f0\fswiss\fcharset0 Helvetica;} {\colortbl;\red255\green255\blue255;} \paperw11900\paperh16840\margl1440\margr1440\vieww10800\viewh8400\viewkind0 \pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardirnatural \f0\fs24 \cf0 lichgan isdadafadad} 请问这是怎么回事呢?
[/quote] 我其实已经把rtf文件格式改成了text格式,但是还是带出来一样的内容,这事怎么回事呢[/quote]
Ministarler 2013-10-17
  • 打赏
  • 举报
回复
引用 2 楼 turingo 的回复:
rtf文件本身就包含许多格式信息,比如字体颜色表格什么的,不是纯文本文件,直接读有乱码很正常。 [quote=引用 楼主 lc10915819 的回复:]

#include <stdio.h>

int main(int argc, const char * argv[])
{
    FILE *fp;
    int ch;
    fp = fopen("/Users/lichan/Desktop/name.rtf", "rb");
        
        while ((ch=getc(fp)) != EOF)
        {
            putchar(ch);

        }
        

    
    return 0;
}
   
文件内容:lichgan isdadafadad 读出来的内容: {\rtf1\ansi\ansicpg936\cocoartf1187\cocoasubrtf370 {\fonttbl\f0\fswiss\fcharset0 Helvetica;} {\colortbl;\red255\green255\blue255;} \paperw11900\paperh16840\margl1440\margr1440\vieww10800\viewh8400\viewkind0 \pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardirnatural \f0\fs24 \cf0 lichgan isdadafadad} 请问这是怎么回事呢?
[/quote]
引用 2 楼 turingo 的回复:
rtf文件本身就包含许多格式信息,比如字体颜色表格什么的,不是纯文本文件,直接读有乱码很正常。 [quote=引用 楼主 lc10915819 的回复:]

#include <stdio.h>

int main(int argc, const char * argv[])
{
    FILE *fp;
    int ch;
    fp = fopen("/Users/lichan/Desktop/name.rtf", "rb");
        
        while ((ch=getc(fp)) != EOF)
        {
            putchar(ch);

        }
        

    
    return 0;
}
   
文件内容:lichgan isdadafadad 读出来的内容: {\rtf1\ansi\ansicpg936\cocoartf1187\cocoasubrtf370 {\fonttbl\f0\fswiss\fcharset0 Helvetica;} {\colortbl;\red255\green255\blue255;} \paperw11900\paperh16840\margl1440\margr1440\vieww10800\viewh8400\viewkind0 \pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardirnatural \f0\fs24 \cf0 lichgan isdadafadad} 请问这是怎么回事呢?
[/quote] 我其实已经把rtf文件格式改成了text格式,但是还是带出来一样的内容,这事怎么回事呢
  • 打赏
  • 举报
回复
引用 2 楼 turingo 的回复:
rtf文件本身就包含许多格式信息,比如字体颜色表格什么的,不是纯文本文件,直接读有乱码很正常。 [quote=引用 楼主 lc10915819 的回复:]

#include <stdio.h>

int main(int argc, const char * argv[])
{
    FILE *fp;
    int ch;
    fp = fopen("/Users/lichan/Desktop/name.rtf", "rb");
        
        while ((ch=getc(fp)) != EOF)
        {
            putchar(ch);

        }
        

    
    return 0;
}
   
文件内容:lichgan isdadafadad 读出来的内容: {\rtf1\ansi\ansicpg936\cocoartf1187\cocoasubrtf370 {\fonttbl\f0\fswiss\fcharset0 Helvetica;} {\colortbl;\red255\green255\blue255;} \paperw11900\paperh16840\margl1440\margr1440\vieww10800\viewh8400\viewkind0 \pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardirnatural \f0\fs24 \cf0 lichgan isdadafadad} 请问这是怎么回事呢?
[/quote] ++
图灵狗 2013-10-17
  • 打赏
  • 举报
回复
rtf文件本身就包含许多格式信息,比如字体颜色表格什么的,不是纯文本文件,直接读有乱码很正常。
引用 楼主 lc10915819 的回复:

#include <stdio.h>

int main(int argc, const char * argv[])
{
    FILE *fp;
    int ch;
    fp = fopen("/Users/lichan/Desktop/name.rtf", "rb");
        
        while ((ch=getc(fp)) != EOF)
        {
            putchar(ch);

        }
        

    
    return 0;
}
   
文件内容:lichgan isdadafadad 读出来的内容: {\rtf1\ansi\ansicpg936\cocoartf1187\cocoasubrtf370 {\fonttbl\f0\fswiss\fcharset0 Helvetica;} {\colortbl;\red255\green255\blue255;} \paperw11900\paperh16840\margl1440\margr1440\vieww10800\viewh8400\viewkind0 \pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardirnatural \f0\fs24 \cf0 lichgan isdadafadad} 请问这是怎么回事呢?
Ministarler 2013-10-17
  • 打赏
  • 举报
回复
文本模式和二进制模式读出来的内容一样。把rtf格式转化为 text格式还是这个样子。
Ministarler 2013-10-17
  • 打赏
  • 举报
回复
引用 17 楼 lm_whales 的回复:
用RichEdit控件读取,存储为文本格式即可。
使用 touch filename 吧。看来只有这样了。楼上的都给分。
lm_whales 2013-10-17
  • 打赏
  • 举报
回复
用RichEdit控件读取,存储为文本格式即可。
赵4老师 2013-10-17
  • 打赏
  • 举报
回复
推荐使用WinHex软件查看硬盘或文件或内存中的原始字节内容。 电脑内存或文件内容只是一个一维二进制字节数组及其对应的二进制地址; 人脑才将电脑内存或文件内容中的这个一维二进制字节数组及其对应的二进制地址的某些部分看成是整数、有符号数/无符号数、浮点数、复数、英文字母、阿拉伯数字、中文/韩文/法文……字符/字符串、汇编指令、函数、函数参数、堆、栈、数组、指针、数组指针、指针数组、数组的数组、指针的指针、二维数组、字符点阵、字符笔画的坐标、黑白二值图片、灰度图片、彩色图片、录音、视频、指纹信息、身份证信息……

70,022

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧