| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4356 人关注过本帖
标题:相同的代码,为什么vc6.0可运行,vs2010却不行呢?
只看楼主 加入收藏
starliyan
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2012-12-15
结帖率:0
收藏
已结贴  问题点数:10 回复次数:7 
相同的代码,为什么vc6.0可运行,vs2010却不行呢?
#include<stdio.h>
#include<stdlib.h>

void main()
{
    FILE *in, *out;
    char ch, infile[10],outfile[10];
    printf("please input the filename for reading:");
    scanf("%s",infile);

    printf("please input the filename for writing:");
    scanf("%s",outfile);

    if((in=fopen(infile,"r"))==NULL)
    {
        printf("open file(read) error!\n");
        exit(0);
    }

    if((out=fopen(outfile,"w"))==NULL)
    {
        printf("open file(write) error!\n");
        exit(0);
    }

    while(!feof(in))
    {
        ch=fgetc(in);
        fputc(ch,out);
        putchar(ch);
    }

    putchar(10);
    fclose(in);
    fclose(out);
}

问题:vs2010中,即使文件中有所要读入的文件,printf("open file(read) error!\n"),始终是open file(read) error!
vc6.0中却可以顺利执行。


[此贴子已经被作者于2016-5-27 15:36编辑过]

搜索更多相关主题的帖子: reading include writing please 
2016-05-27 14:43
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9024
专家分:54030
注 册:2011-1-18
收藏
得分:4 
既然“不行”,你得告诉大家哪里不行呀!!!
比如 编译失败,某行报某某错
比如 运行失败,输入某某,输出某某
2016-05-27 15:08
starliyan
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2012-12-15
收藏
得分:0 
回复 2楼 rjsp
vs2010中,即使文件中有所要读入的文件,printf("open file(read) error!\n"),始终是open file(read) error!
vc6.0中却可以顺利执行。

另外,在两个软件中编译都没问题。
2016-05-27 15:36
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9024
专家分:54030
注 册:2011-1-18
收藏
得分:0 
回复 3楼 starliyan
你得告诉别人你程序运行时输入了什么,否则别人怎么知道为什么运行错误?
2016-05-27 15:42
_Strike
Rank: 2
等 级:论坛游民
帖 子:133
专家分:72
注 册:2016-3-22
收藏
得分:4 
回复 4楼 rjsp
我知道的有scanf在vs要改成scanf_s
2016-05-27 16:56
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9024
专家分:54030
注 册:2011-1-18
收藏
得分:0 
回复 5楼 _Strike
我怀疑是他输入超过了9个字符,数字溢出。
但他死活不肯说输入了什么,没办法
2016-05-27 18:55
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9024
专家分:54030
注 册:2011-1-18
收藏
得分:0 
另外,while(!feof(in))也是个月经式的错误了
2016-05-27 18:57
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10607
专家分:43182
注 册:2014-5-20
收藏
得分:4 
以下是引用rjsp在2016-5-27 18:57:29的发言:

另外,while(!feof(in))也是个月经式的错误了

while(!feof(in))
{
    ch=fgetc(in);
    fputc(ch,out);
    putchar(ch);
}
这样用feof()最后会有个“空值”
一般用法:
ch=fgetc(in);
while(!feof(in))
{
    fputc(ch,out);
    putchar(ch);
    ch=fgetc(in);
}
或:
while(!feof(in))
{
    ch=fgetc(in);
    if (ch != EOF)
    {
        fputc(ch,out);
        putchar(ch);
    }
}
或不用feof():
while((ch=fgetc(in)) != EOF)
{
    fputc(ch,out);
    putchar(ch);
}


2016-05-27 20:23
快速回复:相同的代码,为什么vc6.0可运行,vs2010却不行呢?
数据加载中...
 
   



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

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