| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 754 人关注过本帖
标题:为什么我的do..while不被触发呢???
取消只看楼主 加入收藏
Sornets
Rank: 2
等 级:论坛游民
帖 子:102
专家分:61
注 册:2012-11-22
结帖率:58.82%
收藏
已结贴  问题点数:20 回复次数:5 
为什么我的do..while不被触发呢???
我调试的是最低下的scanf没有被触发。

程序代码:
#include <stdio.h>
#include <stdlib.h>
void input_f(char str[])
{
    scanf("%s",str);
    if(!check_f(str))
    {
        return ;
    }

}
void change_f(char * str)
{
    int len;
    lower_f(str);
    len = strlen_f(str);
    if(len >= 100)
    {
        printf("Too Long!\n");
        return;
    }
    if (str[0] == 'a' || str[0] == 'e' || str[0] == 'i' || str[0] == 'o' || str[0] == 'u')
    {
        str[len++] = 'p';
        str[len++] = 'y';
        str[len] = '\0';
    }
    else
    {
        int i;
        for( i = 1; i < len; i++ )
        {
            str[i - 1] = str[i];
        }
        str[i++] = 'p';
        str[i++] = 'y';
        str[i] = '\0';
    }
}
void print_f(char str[])
{
    printf("%s",str);
}
void lower_char_f(char * str)//修改为小写
{
    if(*str < 'a')
        *str = *str + ('a' - 'A');
}
void lower_f(char str[])
{
    int len;
    len = strlen_f(str);
    int i;
    for( i = 0; i < len; i++)
    {
        if(str[i] < 'a')
            str[i] = str[i] + ('a' - 'A');
    }
}
int strlen_f(char * str)//== (char str[])
{
    int len,i;
    for( i = 0;; i++)
    {
        if(str[i] == '\0')
        {
            len = i;
            break;
        }
    }
    return len;
}
int check_f(char * str)//if:void check_f()?
{
    int len,i;
    len = strlen_f(str);
    for( i = 0; str[i] != '\0'; i++)
    {
        if(str[i] < 'A' || str[i] > 'z' || str[i] > 'Z' && str[i] < 'a')
        {
            printf("ERROR\n");
            return -1;
        }
    }
    return 1;
}
int main()
{
    char str[105],flag = 'y';
    do
    {
        printf("Welcome Pig(),Please input the string now!\n");
        input_f(str);
        change_f(str);
        print_f(str);
        printf("\nDo you want again?\n");
        scanf("%c",&flag);
        lower_char_f(&flag);
    }
    while (flag == "yes" ||flag == 'y');
    return 0;
}


求解~
搜索更多相关主题的帖子: color 
2014-02-03 19:53
Sornets
Rank: 2
等 级:论坛游民
帖 子:102
专家分:61
注 册:2012-11-22
收藏
得分:0 
回复 2楼 kindboy18
这样虽然能输入了,但好像不是给flag的。

我的想法是在scanf输入flag的值,是y的话就继续do..while循环,不是的话就跳出循环结束。

但现在scanf也没有起作用,do..while也没有起作用
2014-02-04 11:12
Sornets
Rank: 2
等 级:论坛游民
帖 子:102
专家分:61
注 册:2012-11-22
收藏
得分:0 
回复 2楼 kindboy18
哦哦 明白了!用在scanf前面加个getchar()是读的之前的回车吧!
2014-02-04 11:15
Sornets
Rank: 2
等 级:论坛游民
帖 子:102
专家分:61
注 册:2012-11-22
收藏
得分:0 
回复 6楼 kindboy18
已经解决了:)
2014-02-04 14:53
Sornets
Rank: 2
等 级:论坛游民
帖 子:102
专家分:61
注 册:2012-11-22
收藏
得分:0 
回复 8楼 kindboy18
就是在scanf前面加个getchar(),因为在之前的输入中有个回车,没有getchar的话flag会读回车。
2014-02-04 16:21
Sornets
Rank: 2
等 级:论坛游民
帖 子:102
专家分:61
注 册:2012-11-22
收藏
得分:0 
回复 10楼 MusicSky
这个办法更简单~!
2014-02-06 13:16
快速回复:为什么我的do..while不被触发呢???
数据加载中...
 
   



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

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