求教问题
cide吧
全部回复
仅看楼主
level 1
茗人誓言 楼主
无法编译,百度无效
2018年02月25日 04点02分 1
level 13
可能是你的文件路径中有空格
2018年02月25日 05点02分 2
果然如此
2018年02月27日 13点02分
level 1
茗人誓言 楼主
运行无用 a内容未复制给b a.b和这个f.c在同一目录@不知者来此 求教
2018年02月28日 06点02分 3
level 13
用feof判断文件结束
2018年02月28日 06点02分 4
level 1
茗人誓言 楼主
依然无用 @不知者来此
2018年02月28日 07点02分 5
运行后b文件还是空的@不知者来此
2018年02月28日 07点02分
@茗人誓言 c没有获取a.txt的内容,c可能等于0,那你把值为0的c写入b.txt也没有意义啊
2018年02月28日 07点02分
@不知者来此 你前面的代码里 c的类型是 unsigned char而EOF的类型是signed int,一个无符号一个有符号,作!=比较时永远是为真,你可以把char c改为 signed char c,这样你就可以用前面的代码而不需要用到feof了
2018年02月28日 07点02分
level 1
茗人誓言 楼主
还是这样@不知者来此
2018年02月28日 07点02分 6
2018年02月28日 07点02分
level 1
茗人誓言 楼主
#include <stdio.h>
int main(void)
{
FILE *fp1,*fp2;
signed char c;
fp1=fopen("a.txt","r"); /*打开源文件*/
fp2=fopen("b.txt","w"); /*打开将写入的文件*/
while ((c=fgetc(fp1))!=EOF) /*将源文件fp1的内容转存(复制)到目标文件fp2中*/
fputc(c,fp2);
fclose(fp1); /*关闭文件*/
fclose(fp2);
return 0;
}
2018年02月28日 07点02分 7
这个可以啊,我运行过了
2018年02月28日 07点02分
@不知者来此 是不是手机太烂了 我又去试了几次 还是一样
2018年02月28日 07点02分
level 13
//这是有效的,你参考吧
#include <stdio.h>
int main() {
signed char c;
FILE *f1 = fopen("a.txt", "rb");
FILE *f2 = fopen("b.txt", "wb");
while ((c = fgetc(f1)) != EOF)
fputc(c, f2);
fclose(f1);
fclose(f2);
return 0;
}
2018年02月28日 07点02分 8
level 1
茗人誓言 楼主
结果没有变化
2018年02月28日 07点02分 9
那你可能运行的不是这个程序,而是别的项目,你先把打开的项目关闭吧
2018年02月28日 07点02分
@不知者来此 我去掉分号 点击运行失败后 加上分号再运行 还是一样
2018年02月28日 07点02分
@茗人誓言 结果一样 我确定是这个项目
2018年02月28日 07点02分
@茗人誓言 我知道了,你可以关闭重新打开b.txt
2018年02月28日 07点02分
level 1
茗人誓言 楼主
结果没有变化
2018年02月28日 07点02分 10
你可以在main的下一行写一句printf("blablabla\n");来证明你运行对了程序。
2018年02月28日 07点02分
@不知者来此 你说的没错 加了还是一样的结果
2018年02月28日 07点02分
@茗人誓言 运行没看见blablabla?那说明你运行的是别的程序。
2018年02月28日 07点02分
level 13
//你把这个运行一下截个图
#include <stdio.h>
#include <stdlib.h>
int main(void) {
system("cat a.txt");
FILE *fp1, *fp2;
signed char c;
fp1 = fopen("a.txt", "r"); /*打开源文件*/
fp2 = fopen("b.txt", "w"); /*打开将写入的文件*/
while ((c = fgetc(fp1)) != EOF) /*将源文件fp1的内容转存(复制)到目标文件fp2中*/
fputc(c, fp2);
fclose(fp1); /*关闭文件*/
fclose(fp2);
system("cat b.txt");
return 0;
}
2018年02月28日 07点02分 11
改成绝对路径 成了
2018年02月28日 08点02分
多谢指导
2018年02月28日 08点02分
level 1
茗人誓言 楼主
如你所言
2018年02月28日 07点02分 12
这说明连a.txt都没打开,就不可能再复制到b.txt了,system("pwd");可以显示你运行的目录。
2018年02月28日 08点02分
level 13
我知道了,这个运行目录不在你的自作用件下,而是在内部的home目录,所以这个a.txt和b.txt你可能要填写完整路径才行,这个问题在cide3是没有的。
2018年02月28日 08点02分 13
1