//C语言的问题,为什么这个代码能运行#include<stdio.h> int main(){

//C语言的问题,为什么这个代码能运行#include<stdio.h>
int main(){
FILE *fp;
char op;
if((fp = fopen("/sdcard/abc.txt","rt")) == NULL)
{
printf("error!");
}
op = fgetc(fp);
while(!feof(fp)){
printf("%c",op);
op = fgetc(fp);
}
fclose(fp);
}
//但是这个代码却运行后无限输出乱码符号
#include<stdio.h>
int main(){
FILE *fp;
char op;
if((fp = fopen("/sdcard/abc.txt","rt")) == NULL)
{
printf("error!");
}
op = fgetc(fp);
while(op != EOF){
printf("%c",op);
op = fgetc(fp);
}
fclose(fp);
}
//这个是怎么回事?求大神解答

既然是读txt文件,就要用文本类型的文件来处理,而file是无类型的文件。
另外,即使是文本,由于编码方式的演变(ASCii一一unicode),输出的也可能是不规则的(数字)。追问

文本类型代码是啥

追答你的问题应该是后一种情况,即:文本的编码方式的为unicode !
===============================


C语言中没有输入输出语句,所有的输入输出功能都用 ANSI C提供的一组标准库函数来实现。文件操作标准库函数有:

      文件的打开操作 fopen 打开一个文件

      文件的关闭操作 fclose 关闭一个文件

      文件的读写操作 fgetc 从文件中读取一个字符
              fputc 写一个字符到文件中去
              fgets 从文件中读取一个字符串
              fputs 写一个字符串到文件中去
              fprintf 往文件中写格式化数据
              fscanf 格式化读取文件中数据
              fread 以二进制形式读取文件中的数据
              fwrite 以二进制形式写数据到文件中去
              getw 以二进制形式读取一个整数
              putw 以二进制形式存贮一个整数

    文件状态检查函数 feof 文件结束
              ferror 文件读/写出错
              clearerr 清除文件错误标志
              ftell 了解文件指针的当前位置

      文件定位函数 rewind 反绕
              fseek 随机定位

追问

醉了,这个有啥用?打开文件不都是用FILE加文件指针么

追答

或者你打开的文件不是文本格式的,或者文件的编码非ascii(汉字区位码)。

追问

就是txt格式的,内容为字母

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答