| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 507 人关注过本帖
标题:帮我看看这个程序哪里出了错~~~
只看楼主 加入收藏
guo5520
Rank: 1
等 级:新手上路
帖 子:11
专家分:1
注 册:2010-3-2
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:8 
帮我看看这个程序哪里出了错~~~
本人刚学习c语言,编了一个程序,结果是程序可以运行,但是void fun(void)不能达到想要的结果~~各位帮我看看,哪里出了错!!



#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int secret(void);
void fun(void);
int main(void)
{
   
    if(secret()==1)
        fun();
   
   
 
    return 0;
}


int secret(void)
{
    int result,f,key;
    char name[10];

    printf("请输入用户名:");
    scanf("%s",name);
    f=strcmp(name,"guo5520");
    if(f==0)
    {
        printf("请输入密码:");
        scanf("%d",&key);
        if(123==key){
            printf("欢迎使用本程序!\n............%s",name);
            result=1;
        }
        else
        {
            printf("密码错误!\n\n");
            result=0;
        }
    }

    else{
        printf("用户名错误!");
        result=0;
    }

    return result;
}


void fun(void)
{
   
    FILE * fp;
    int i,n=0;
    char ch,ch1;
   
    printf("    欢迎使用日志程序!\n\n");
    printf("请在这里输入:");


     fp=fopen("f1.txt","w+");
   
   

    while(ch!='\n'){
        ch=getchar();
        fputc(ch,fp);
        n++;
    }


    printf("%d\n",n);
    if(fclose(fp)){
        printf("关闭失败!!\n");
        exit(0);
    }
    if((fp=fopen("f1.txt","r"))==NULL){
        printf("打开失败!\n");
        exit(0);
    }
    for(i=0;i<n;i++){
        ch=fgetc(fp);
        putchar(ch);
    }
    if(fclose(fp)){
        printf("关闭失败!!\n");
        exit(0);
    }

   
    printf("请输入任何字符结束本程序:");

    ch1=getchar();

    return;
}

就是在“请在这里输入:”,出了问题,后面不是我输入的,程序直接跳到了“请输入任何字符结束本程序”

 
图片附件: 游客没有浏览图片的权限,请 登录注册


[ 本帖最后由 guo5520 于 2010-3-31 22:18 编辑 ]
2010-03-31 22:16
Kabie
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:69
专家分:185
注 册:2009-8-21
收藏
得分:5 
在while(ch!='\n')之前先getchar()一次就行了……
收到的鲜花
  • guo55202010-04-02 19:42 送鲜花  3朵   附言:我很赞同,,分虽然不多,可是却真的感谢你 ...
2010-04-01 03:28
guo5520
Rank: 1
等 级:新手上路
帖 子:11
专家分:1
注 册:2010-3-2
收藏
得分:0 
你说的这个也是我程序的一个错误的地方,,可是我改过来之后,结果由“1,变成“0”了,依然还是不能由自己输入啊!!

哎,,,

我看了好多遍了,,还是不知道哪有问题!!!
2010-04-01 19:03
b001lcp
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:45
专家分:157
注 册:2010-3-17
收藏
得分:5 
while(ch!='\n')

不能用 \n 来做判断,改个其它字符就可以了。
收到的鲜花
  • guo55202010-04-02 19:42 送鲜花  3朵   附言:我很赞同,,分虽然不多,可是却真的感谢你 ...
2010-04-01 20:47
guo5520
Rank: 1
等 级:新手上路
帖 子:11
专家分:1
注 册:2010-3-2
收藏
得分:0 
不是啊,,我把这个模块单独做成一个程序的时候,这是可以的啊!!!
到底怎么回事啊!!!
2010-04-01 22:57
亚小南
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:69
专家分:136
注 册:2009-11-19
收藏
得分:5 
楼主
刚才看了一下你的程序
首先就是2楼所指出的错误
另外听你的意思是 “请在这里输入:”,出了问题,后面不是我输入的,程序直接跳到了“请输入任何字符结束本程序”
    我明白你的意思,是想输入一个东西
    但你后面好像没有要你输入的scanf 语句,没有提示输入
    无法输入
也许楼主漏了些东西
楼主,下面是你的程序
ch=getchar();

    while(ch!='\n')
    {
       // ch=getchar();
        fputc(ch,fp);
        n++;
    }


    printf("%d\n",n);
    if(fclose(fp)){
        printf("关闭失败!!\n");
        exit(0);
    }
    if((fp=fopen("f1.txt","r"))==NULL){
        printf("打开失败!\n");
        exit(0);
    }
    for(i=0;i<n;i++){
        ch=fgetc(fp);
        putchar(ch);
    }
    if(fclose(fp)){
        printf("关闭失败!!\n");
        exit(0);
    }

   
    printf("请输入任何字符结束本程序:");

    ch1=getchar();

    return;
然后我们为了看更清楚经常可以省些东西,可成为

    ch=getchar();

    while(ch!='\n')
    {
       // ch=getchar();
        fputc(ch,fp);
        n++;
    }


    printf("%d\n",n);
 
    }
    for(i=0;i<n;i++){
        ch=fgetc(fp);
        putchar(ch);
    }              
  

   
    printf("请输入任何字符结束本程序:");

    ch1=getchar();

    return;

楼主,你这里有要输入的语句吗
收到的鲜花
  • guo55202010-04-02 19:43 送鲜花  3朵   附言:我很赞同,,分虽然不多,可是却真的感谢你 ...
2010-04-02 12:46
guo5520
Rank: 1
等 级:新手上路
帖 子:11
专家分:1
注 册:2010-3-2
收藏
得分:0 
我刚刚看了你们的,然后我自己又调试了一下,楼上的写的(我小试了一下,一些部分有问题)给了我提示现在改为如下:
void fun(void)
{
   
    FILE * fp;
    int i,n=0;
    char ch1;
    int ch;
   
    printf("    欢迎使用日志程序!\n\n");
    fp=fopen("f1.txt","w+");
    printf("请在这里输入:");
   
    do
    {
        ch=getchar();
        fputc(ch,fp);
        n++;
    }while(ch!='0');

    fclose(fp);
    fflush(stdin);

    printf("一共输入了%d个数据!\n",n);

    fp=fopen("f1.txt","r");
  
    while(!feof(fp)){
        putchar(ch);
        ch=fgetc(fp);
    }
   
    printf("请输入任何字符结束本程序:");
    ch1=getchar();
    return;
}


基本上达到了我要的功能,不过我现在不知道改用什么符号结束了,,程序里我占时用了一个0,,只是真正用的时候不能用0,各位给点意见撒!
2010-04-02 19:40
Kid_X
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:216
专家分:515
注 册:2007-10-8
收藏
得分:5 
LZ仍可以用'\n'作为符号结束,但是在while调用getchar之前先清空一下输入缓冲区,我印象中scanf输入时,你敲的回车符仍旧会在留在输入缓冲区中,所以你一开始getchar时就读取了'\n',导致不满足while循环条件,程序继续往下运行了。
2010-04-02 22:33
guo5520
Rank: 1
等 级:新手上路
帖 子:11
专家分:1
注 册:2010-3-2
收藏
得分:0 
各位朋友,谢了!!!
2010-04-03 21:57
快速回复:帮我看看这个程序哪里出了错~~~
数据加载中...
 
   



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

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