C语言打开文件问题 程序如下

如题所述

是这样的,有两个错:
一,.txt文件存储的是字符,你的123456789,在txt里是char型,即1是字符‘1’对应的是ascii码的049。
而且从fgetc()函数可以看出,它读取的是字符。但是巧合的是,字符和整型可以通用,所以,你在下面求余%是没有报错,系统将读取的字符,转换成ascii整型后经行运算,即这样,读取文件里的‘1’其实是ascii对应的整数49,一次类推。
二,while()中,应该将testdata=fgetc(fp);
放到if
else
后面,应为,你在循环外面已经读入了一个数字,这样在进入后你有读取一个,这时,就是从第二个开始判断了,所以应改在条件之后。
这样改过后,结果就是除了文件里'3'是the
case
is
correct,因为字符‘3’对应的整数是51,求余后是1,其他都是it
is
wrong!.
补充:你要是想的到你预期的结果,首先,将上述第二个错误改过来,接着,在循环中把字符型转换为整型即:用读入的字符减去字符‘0’,对应的整型,这样就得到每个读入字符与字符‘0’的差,即为你要的整数。
char
ch;
ch=fgetc(fp);
while(ch!=eof)
{
testdata=ch-'0';
if(testdata%10==1)
cout<<"the
case
is
correct"<
评论
0
0
0
加载更多
温馨提示:内容为网友见解,仅供参考
第1个回答  2020-01-16
#include
int
main()
{
FILE
*in,*out;
int
i;
char
inFileName[90],outFileName[90];
printf("请输入原位图文件的文件名:\n");
scanf("%s",inFileName);
printf("请输人取反操作后新位图文件的文件名:\n");
scanf("%s",outFileName);
if((in=fopen(inFileName,"rb"))==NULL)
{
printf("无法打开输入文件\n");
return
1;
}
if((out=fopen(outFileName,"wb"))==NULL)
{
printf("无法打开输出文件\n");
return
1;
}
for(i=1;!feof(in);i++)
{
if(i<=54)
fputc(fgetc(in),out);/*位图文件的前54个字节保持原样不变保存到新文件中*/
else
fputc(~fgetc(in),out);/*对实际位图数据部分的每个字节进行取反操作后保存*/
}
fclose(in);fclose(out);
return
0;
getch();
}
两个小问题
scanf("%s",outFileName);
变量前面漏掉了取地址符
然后%号应该用半角符输入
你输入的是全角符
改过这之后能用
我测了

C语言打开文件问题 程序如下
一,.txt文件存储的是字符,你的123456789,在txt里是char型,即1是字符‘1’对应的是ascii码的049。而且从fgetc()函数可以看出,它读取的是字符。但是巧合的是,字符和整型可以通用,所以,你在下面求余%是没有报错,系统将读取的字符,转换成ascii整型后经行运算,即这样,读取文件里的‘1’其实是...

C语言有关fopen的问题,程序如下
int getchar(void);你应该用fgetc(FILE *FP),做如下修改吧 include <stdio.h>#define sin(x,q) fopen(x,q)int main (){FILE *q=NULL,*p=NULL;char a[]=".\/123.txt";char w[]="r";int c;p=sin(a,w);q=fopen(".\/124.txt","a");while((c=fgetc(p))!=EOF)\/\/p->123...

c语言怎么打开文件内容
1、首先需要下载专门的c语言编程软件,一般从百度下载就可以。2、打开下载好的c语言编程软件,界面如下图所示。3、在标题下方点击打开项目,操作如下图所示。4、软件会自动帮你找到自己做的文件,点击需要打开的文件。5、可以看到文件打开,自己可以进行查看,或者修改,添加程序。

这段C语言的 读文件哪里出错了???为什么读出来的是“屯屯屯屯屯...
加一行代码: fseek(f, 0, SEEK_SET);你写好文件后,没有关闭,那么文件指针在最后一个位置,那你在读的时候肯定就是从末尾啊,所以是随机字符,就像你说的乱码样。故不用fseek也行,加这两行代码:fclose(f);f=fopen("c:\\\\test.txt","rt+"); \/\/也关了,在打开,也行。改后程序如下:...

c语言打开文件失败
于是你的判断就变成了:if(!(fp1=fopen(a,"rb")))\/\/若打开文件成功,执行空语句(一个分号) ;后面的语句:{ printf("cannot open the first file!"); exit(1); }就成了必须会执行的顺序语句了。后面的错误都一样……把if判断那一句后面的分号去掉程序就正常了。

c语言微软电脑怎么打开文件c语言如何打开文件
=EOF) { printf("%c",ch); } fclose(fp); } getch();}是否可以解决您的问题?Ⅱ c语言 如何打开一个TXT文件。C语言,打开文件一个TXT文件,需要使用fopen()函数。它的函数原型位FILE*fopen(constchar*path,constchar*mode);如果文件顺利打开后,返回指向该流的文件指针就会。如果文...

c语言:从文件f1.txt读入一行字符,将其中所有小写字母改写为大写字母,然 ...
程序如下:include <stdio.h> int main(){ FILE *fin, *fout;char s[1024]; \/\/假定一行不超过1024个字符 int i;if ( (fin = fopen("f1.txt","r"))==NULL){ printf("Can not open f1.txt\\n"); return 0;}; \/\/作为读,打开文件 fgets( s,1024,fin); \/\/读一行 fclos...

C语言程序打开文件乱码问题(调试正确再加50分)
二进制写入的 打开是看起来像乱码 除非你以字符串方式写入 如果要改保存函数的话 读入肯定需要重新写解析函数了 好吧 如果你不考虑载入函数需要重新解析的话 那么需要改的地方 就是fopen里的wb 改成 w 然后那些fread fwrite 都要改成 fgets fputs 或者其他文件字符操作的函数 ...

c语言如何打开一个可执行文件 命令
1.进入tubor.c 2.程序如下:main(){ FILE *fp;char filename[40];printf("Plese input the file add:");\/*在这里输入文件路径,如:c;\\system32*\/ if((fp=fopen(filename),"rb")==NULL)printf("Error!Can't find the file!");\/*在着两句语句中,首先,一二进制只读的方式打开...

c语言 如何打开一个TXT文件。
1、首先打开编辑的页面中,引入需要的文件,输入代码:include <stdio.h> include <stdlib.h> 2、然后点击输入下方的代码指令:int main(){ system("start C:\\a.txt");return 0;} 3、然后就可以看到已经打开想要打开的TXT文件了。

相似回答