鱼C论坛

 找回密码
 立即注册
查看: 2111|回复: 11

C-->scanf 求助

[复制链接]
发表于 2014-7-11 12:58:32 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
各位大神们帮看看
我的操作需要输入2个参数 一个int 一个字符串,
        printf ( "请选择打开文件的方式: " ) ;
        scanf  ( "%d", &num ) ;
        printf ( "请输入需要读/写的文件名称: " ) ;
        scanf  ( "%s", filename ) ;

但是在实际操作的时候字符串总是需要输入2次.

代码截图

代码截图
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-7-11 13:33:47 | 显示全部楼层
你有两个参数,不输入两次输几次?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-7-11 13:58:56 | 显示全部楼层
catch 发表于 2014-7-11 13:33
你有两个参数,不输入两次输几次?

sorry 估计我没描述清楚,我说的是输入了文件名后 回车, 还需要再输入一次文件名才行.

点评

麻烦提供完整代码?  详情 回复 发表于 2014-7-11 14:00
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-7-11 14:00:09 | 显示全部楼层
linuxyz 发表于 2014-7-11 13:58
sorry 估计我没描述清楚,我说的是输入了文件名后 回车, 还需要再输入一次文件名才行.

麻烦提供完整代码?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-7-11 14:05:03 | 显示全部楼层
下面没有代码了?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-7-11 14:54:12 | 显示全部楼层
linuxyz 发表于 2014-7-11 13:58
sorry 估计我没描述清楚,我说的是输入了文件名后 回车, 还需要再输入一次文件名才行.
#include <stdio.h>

int fgetc_test () ;
char* chooseModel ( int ) ;

int main ( void )
{
        int  num ;
        char filename[20] ;
        printf ( "1、(只读)为输入打开一个文本文件\n" ) ;
        printf ( "2、(只写)为输出打开一个文本文件\n" ) ;
        printf ( "3、(追加)向文本文件末尾增加数据\n" ) ;
        printf ( "4、(只读)为输入打开一个二进制文件\n" ) ;
        printf ( "5、(只写)为输出打开一个二进制文件\n" ) ;
        printf ( "6、(追加)向二进制文件末尾追加数据\n" ) ;
        printf ( "7、(读写)为读/写打开一个文本文件\n" ) ;
        printf ( "8、(读写)为读/写建立一个新的文本文件\n" ) ;
        printf ( "9、(读写)为读/写打开一个文本文件\n" ) ;
        printf ( "10、(读写)为读/写打开一个二进制文件\n" ) ;
        printf ( "11、(读写)为读/写建立一个新的二进制文件\n" ) ;
        printf ( "12、(读写)为读/写打开一个二进制文件\n\n" ) ;
        printf ( "请选择打开文件的方式: " ) ;
        scanf  ( "%d", &num ) ;
        printf ( "请输入需要读/写的文件名称: " ) ;
        scanf  ( "%s", filename ) ;
        
        fgetc_test ( filename, chooseModel ( num ) ) ;
        return 0 ;
}

int fgetc_test ( char filename[20], char model[20] )
{
        FILE * fp ;
        char   ch ;
        
        scanf  ( "%s", filename ) ;
        
        if ( !( fp = fopen ( filename, model) ) ) 
        {
                printf ( "Can not open the file!\n" ) ;
                return 0 ;
        }
        while ( ch != EOF )
        {
                ch = fgetc ( fp ) ;
                putchar ( ch ) ;
        }
        fclose ( fp ) ;
        return 0 ;
}

char* chooseModel ( int num )
{
        switch ( num )
        {
                case 1:  return "r" ;
                case 2:  return "w" ;
                case 3:  return "a" ;
                case 4:  return "rb" ;
                case 5:  return "wb" ;
                case 6:  return "ab" ;
                case 7:  return "rt+" ;
                case 8:  return "wt+" ;
                case 9:  return "at+" ;
                case 10: return "rb+" ;
                case 11: return "wb+" ;
                case 12: return "ab+" ;
                default: return "r" ;
        }
        return "r" ;
}

新手啊 麻烦了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-7-11 14:57:29 | 显示全部楼层
我知道哪问题了 麻烦大神们了..
不好意思 好低级的错误.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-7-11 14:58:45 | 显示全部楼层
我在fgetc_test方法中有个scanf没删除 唉.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-7-11 15:03:32 | 显示全部楼层
在fgetc_test中你又重新要求输入了一次。scanf  ( "%s", filename ) ;
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-7-11 15:35:15 | 显示全部楼层
:titter:就是,还是小鱼厉害,不发完整的还看不出来,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-7-11 17:27:20 | 显示全部楼层
疯狂战圣 发表于 2014-7-11 15:35
就是,还是小鱼厉害,不发完整的还看不出来,

是是. 一直看都没看出来什么问题, 让我发代码的时候 发完我自己立马就看出来了 娃哈哈:lol:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-7-12 10:17:46 | 显示全部楼层
主要问题出现在scanf() 函数中,获取第一个函数,1'\n' ,然后获取int 类型数据 1 ,然后'\n' 留在缓存区buffer 中,后输入名字。然后第二次scanf("%s",fileneme) ,filename  获取 字符,实际上获取到的是\n’,表示filename 没有任何东西,然后丢弃掉,在输入一次才能 filenane 才能获得文件名,有问题请指出,共同进步。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-24 16:37

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表