c语言中怎么读取txt文件的字符
为什么我输出来都是乱码#include<stdio.h>#include<stdlib.h>intmain(){FILE*p;charc;p=fopen("logo.tx...
为什么我输出来都是乱码
#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE *p;
char c;
p=fopen("logo.txt","r");
while((c=fgetc(p)!=EOF))
printf("%c",c);
fclose(p);
return 0;
}
这个txt文件里都是只有 * 这个字符 展开
#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE *p;
char c;
p=fopen("logo.txt","r");
while((c=fgetc(p)!=EOF))
printf("%c",c);
fclose(p);
return 0;
}
这个txt文件里都是只有 * 这个字符 展开
展开全部
运算符优先级的问题:
while((c=fgetc(p)!=EOF)) 被解释成: while(c=(fgetc(p)!=EOF)), c被赋值为(fgetc(p)!=EOF)这个逻辑值了,所以不管文本里的内容是什么,都会在文件指针未指向文件结尾时打印ASCII码为1的字符(因为fgetc(p)!=EOF为真),也就是那个笑脸,到文件结尾时fgetc(p)!=EOF为假 c = 0才退出循环。改动很简单,加个括号防止fgetc(p)先和!=EOF结合就行了:while((c=fgetc(p))!=EOF)
while((c=fgetc(p)!=EOF)) 被解释成: while(c=(fgetc(p)!=EOF)), c被赋值为(fgetc(p)!=EOF)这个逻辑值了,所以不管文本里的内容是什么,都会在文件指针未指向文件结尾时打印ASCII码为1的字符(因为fgetc(p)!=EOF为真),也就是那个笑脸,到文件结尾时fgetc(p)!=EOF为假 c = 0才退出循环。改动很简单,加个括号防止fgetc(p)先和!=EOF结合就行了:while((c=fgetc(p))!=EOF)
追问
等会让我试一试,谢谢啦,就算是这样,为什么是一个笑脸呢
追答
因为在文件未读完之前c的值都是1(逻辑真),对应ASCII的码值就是笑脸
2014-03-16
展开全部
你的文件内容是中文吗?试试英文和数字能不能读出来先。汉字的话不能用字符来读的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询