| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 721 人关注过本帖
标题:各位大虾,看看这个程序
只看楼主 加入收藏
yunfeishizhe
Rank: 2
等 级:论坛游民
帖 子:40
专家分:54
注 册:2010-4-3
结帖率:100%
收藏
已结贴  问题点数:5 回复次数:7 
各位大虾,看看这个程序
#include<stdio.h>
#include<string.h>
#define MAX_SIZE  100
int check(char*,char);
main()
{
    char d;
    int i;
    char string[MAX_SIZE];
    printf("enter string \n");
    scanf("%s",string);
    printf("\nenter letter\n");
    scanf("%c",&d);

    i=check(string,d);
    printf("%d", i);
}
int check(char* str,char c)
{
    int flag=0;
    while (*str!=0)
    {
        if(*str++==c)
        {
            flag=1;
            break;
        }
    }
    return flag;

}
这个程序为什么总是不执行红颜色标注的scanf语句,总是输出0呢?帮帮忙,谢谢了!!!
搜索更多相关主题的帖子: include return letter 
2010-04-08 21:20
lixnkei
Rank: 4
来 自:樱之国度
等 级:业余侠客
帖 子:133
专家分:227
注 册:2008-5-13
收藏
得分:3 
main()
{
    char d, ch;
    int i;
    char string[MAX_SIZE];
    printf("enter string \n");
    scanf("%s",string);
    printf("\nenter letter\n");

    while ((ch = getchar()) !='\n')  //把前一次输入后遗留的垃圾信息吃掉
    {
        continue;
    }

    scanf("%c",&d);

    i=check(string,d);
    printf("%d", i);
}


老师说:会写代码的人多如牛毛,但写得很规范的却不多。代码要规范,养成好习惯~!
2010-04-08 22:19
亚小南
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:69
专家分:136
注 册:2009-11-19
收藏
得分:2 
楼主
建议你可以看看fflush()函数的作用

因为我们的scanf()语句在输完结束的时候
我们经常会打个回车键
而当第二个scanf()语句遇到我们先前输入的回车符就停止了输入

因此在第一个scanf()后可以加一个fflush(stdin);
这是寝室的一个同学说的
我也不是很明白

#include<stdio.h>
#include<string.h>
#define MAX_SIZE  100

int check(char*,char);
int main()
{
    char d;
    int i;
    char string[MAX_SIZE];
    printf("enter string \n");
    scanf("%s",string);
    fflush(stdin);
    printf("\n enter letter \n");
    scanf("%c",&d);
    i=check(string,d);
    printf("%d", i);
    return 0;
}
int check(char* str,char c)
{
    int flag=0;
    while ((*str)!=NULL)
    {
        if((*str)++==c)
        {
            flag=1;
            break;
        }
    }
    return flag;

}

楼主可以运行一下修改后的程序
有什么问题可以回复我
2010-04-08 22:25
onzixuanly
Rank: 1
等 级:新手上路
帖 子:12
专家分:9
注 册:2010-4-9
收藏
得分:0 
因为你上一次输入字符串的时候是以回车结尾的,下一个get()直接读取了“回车”
2010-04-09 14:34
yunfeishizhe
Rank: 2
等 级:论坛游民
帖 子:40
专家分:54
注 册:2010-4-3
收藏
得分:0 
谢谢各位大侠,用你们的方法改了后都可以了
2010-04-10 09:06
haojinbing
Rank: 2
等 级:论坛游民
帖 子:10
专家分:14
注 册:2010-4-17
收藏
得分:0 
读入字符串用gets()不要用sscanf()因为回车的事实很可能 就结束程序了
2010-04-19 15:16
zhongyong123
Rank: 2
等 级:论坛游民
帖 子:45
专家分:15
注 册:2008-12-16
收藏
得分:0 
同意6楼、3楼,但是不明白2楼是什么意思!!!
2010-04-19 15:57
小伊
Rank: 2
等 级:论坛游民
帖 子:27
专家分:33
注 册:2010-4-17
收藏
得分:0 
楼主加个getchar()就好了
2010-04-19 16:56
快速回复:各位大虾,看看这个程序
数据加载中...
 
   



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

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