| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4392 人关注过本帖
标题:执行出错,而且还无法调试
只看楼主 加入收藏
kuaisha
Rank: 2
等 级:论坛游民
帖 子:120
专家分:30
注 册:2016-8-3
结帖率:100%
收藏
 问题点数:0 回复次数:10 
执行出错,而且还无法调试
程序代码:
#include<stdio.h>
#include<stdlib.h>
#define NUMBER 100

int main(int argc,char *argv[])
{
    char capy[NUMBER];
    FILE *file1,*file2;
   

    printf("plese input a filename.\n");
    if(file1 = fopen(argv[1],"rb") == NULL)
    {
        printf("%s",argv[1]);
        exit(1);
    }
    if(file2 = fopen(argv[2],"wb") == NULL)
    {
        printf("%s",argv[2]);
        exit(1);
    }
    fgets(capy,NUMBER,file1);
    fputs(capy,file2);
   

    return 0;
} 

搜索更多相关主题的帖子: 执行 出错 调试 NUMBER printf 
2018-08-14 00:04
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10609
专家分:43210
注 册:2014-5-20
收藏
得分:0 
调试是可以的吧,要方便点可以暂时将argv[1]和argv[2]改为临时文件名。
还有:
if(file1 = fopen(argv[1],"rb") == NULL)
应改为:
if((file1=fopen(argv[1],"rb")) == NULL)
2018-08-14 04:51
kuaisha
Rank: 2
等 级:论坛游民
帖 子:120
专家分:30
注 册:2016-8-3
收藏
得分:0 
回复 2楼 吹水佬
为什么要加多一个括号,不是一样的吗?
2018-08-14 21:43
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10609
专家分:43210
注 册:2014-5-20
收藏
得分:0 
以下是引用kuaisha在2018-8-14 21:43:14的发言:

为什么要加多一个括号,不是一样的吗?

观测一下两种情况的 file1 有什么不同,为什么?
2018-08-15 04:37
kuaisha
Rank: 2
等 级:论坛游民
帖 子:120
专家分:30
注 册:2016-8-3
收藏
得分:0 
回复 4楼 吹水佬
对优先级和结果都没有什么影响啊?
2018-08-18 19:04
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10609
专家分:43210
注 册:2014-5-20
收藏
得分:0 
以下是引用kuaisha在2018-8-18 19:04:53的发言:

对优先级和结果都没有什么影响啊?

结果都没有什么影响?
结果呢?
2018-08-18 20:45
kuaisha
Rank: 2
等 级:论坛游民
帖 子:120
专家分:30
注 册:2016-8-3
收藏
得分:0 
回复 6楼 吹水佬
只是两行警告而已,并没有错误啊?
2018-08-20 23:17
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10609
专家分:43210
注 册:2014-5-20
收藏
得分:0 
以下是引用kuaisha在2018-8-20 23:17:07的发言:

只是两行警告而已,并没有错误啊?

意思是:观测一下两种情况的 file1 有什么不同,为什么?
给两种情况的 file1 值看看,试过了吗?
2018-08-21 04:10
zhangchm2018
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:32
专家分:129
注 册:2018-8-18
收藏
得分:0 

file1 = fopen(argv[1],"rb") == NULL
= 赋值运算符优先级最低,所以上式的表达式等同如下:
file1 = ( fopen(argv[1], "rb") == NULL )
所以实际上是把一个布尔值赋值给文件指针。


既然是用“rb”和“wb”,推荐不用 fgets 和 fputs,而用 fread 和 fwrite
fread 的用法 http://www.
fwrite 的用法 http://www.
2018-08-22 00:05
kuaisha
Rank: 2
等 级:论坛游民
帖 子:120
专家分:30
注 册:2016-8-3
收藏
得分:0 
回复 8楼 吹水佬
你好,我刚刚试了把最上面的那个源代码重新编译了,结果出了错误:
12    14    C:\Users\lenovo\Desktop\未命名1.cpp    [Error] cannot convert 'bool' to 'FILE* {aka _iobuf*}' in assignment
我按你说的做了,但是执行不到那一步就没了,然后把exit(1)删了又执行到一半就出错。明明是同一个程序,为什么我第一次是警告,现在却执行不了?
图片附件: 游客没有浏览图片的权限,请 登录注册
图片附件: 游客没有浏览图片的权限,请 登录注册
图片附件: 游客没有浏览图片的权限,请 登录注册


2018-08-24 19:42
快速回复:执行出错,而且还无法调试
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019584 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved