| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 880 人关注过本帖, 1 人收藏
标题:基础问题
只看楼主 加入收藏
admin_xyz
Rank: 2
等 级:论坛游民
帖 子:195
专家分:77
注 册:2012-6-24
结帖率:97.3%
收藏(1)
 问题点数:0 回复次数:13 
基础问题
#include <stdio.h>

int main ()
{
    char change (char *p);
    char arr[100];
    scanf ("%s",arr);
    change (arr);
    return 0;
}
char change (char *p)
{

    char *str;
    while (*p != '\0')
    {
        if (*p >= 97 && *p <= 122)
            {
                *str++ = *p;      //这为什么一调试就错呢。

            }
                p++;
    }
    printf ("%s\n",str);
    return 0;
}
//输入一个字符串,过滤此串,只保留串中的字母字符,并统计新生成串中包含的字母个素  例如:输入ab234$df  新生成的串为abdf
搜索更多相关主题的帖子: 字母 include change return 
2012-06-30 10:28
hellovfp
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:禁止访问
威 望:30
帖 子:2976
专家分:7697
注 册:2009-7-21
收藏
得分:0 
你的char *str指向哪里?

我们都在路上。。。。。
2012-06-30 10:30
admin_xyz
Rank: 2
等 级:论坛游民
帖 子:195
专家分:77
注 册:2012-6-24
收藏
得分:0 
没指向不能直接赋值吗额。。。貌似不能,那样用指针怎么接收那个字符呢

总有人比你努力,可怕的是比你牛的人比你还努力。
2012-06-30 20:01
admin_xyz
Rank: 2
等 级:论坛游民
帖 子:195
专家分:77
注 册:2012-6-24
收藏
得分:0 
程序代码:
#include <stdio.h>

int main ()
{
    char change (char *p);
    char arr[100];

    scanf ("%s",arr);
    change (arr);

    return 0;
}
char change (char *p)
{

    char *str = p;

    while (*p != '\0')
    {

        puts(p);
        puts(str);

        if (*p >= 97 && *p <= 122)
            {
                *str++ = *p; 

            }
                p++;
    }

    printf ("%s\n",str);

    return 0;
}

我调试了下,输出结果很奇怪。

输入abcd
输出:
abcd
abcd
abcd
bcd
bcd
cd
cd
d
d
为什么


总有人比你努力,可怕的是比你牛的人比你还努力。
2012-06-30 20:24
BBCN_rSean
Rank: 2
等 级:论坛游民
帖 子:16
专家分:26
注 册:2012-6-29
收藏
得分:0 
char change (char *p)
{

    char *str = p;          //str指向p?

    while (*p != '\0')
.

.
printf ("%s\n",str);        //这时的str指向哪里啊
2012-07-01 00:09
admin_xyz
Rank: 2
等 级:论坛游民
帖 子:195
专家分:77
注 册:2012-6-24
收藏
得分:0 
其实我是想把str指向一个空值,然后把*p中字母都赋给str。。。可是如果指向p的话就不行了,给str赋NULL也不行。

总有人比你努力,可怕的是比你牛的人比你还努力。
2012-07-01 10:03
admin_xyz
Rank: 2
等 级:论坛游民
帖 子:195
专家分:77
注 册:2012-6-24
收藏
得分:0 
程序代码:
#include <stdio.h>

int main ()
{
    char change (char *p);
    char arr[100];

    scanf ("%s",arr);
    change (arr);

    return 0;
}
char change (char *p)
{

    char *str = p;

    while (*p != '\0')
    {

        if (*p >= 97 && *p <= 122)
            {
                *str = *p;
                printf ("%c",*str);    //这已经搞定了,可是怎么统计字母总数呢
               

                str++;
            }

        p++;
    }


    return 0;
}

总有人比你努力,可怕的是比你牛的人比你还努力。
2012-07-01 10:17
admin_xyz
Rank: 2
等 级:论坛游民
帖 子:195
专家分:77
注 册:2012-6-24
收藏
得分:0 
#include <stdio.h>
int main ()
{
    char change (char *p);
    char arr[100];
    scanf ("%s",arr);
    change (arr);
    return 0;
}
char change (char *p)
{
    char *str = p;
    int sum = 0;
    while (*p != '\0')
    {
        if (*p >= 97 && *p <= 122)
            {
                *str = *p;
                printf ("%c",*str);
                sum++;
                str++;
            }
        p++;
    }
    printf ("\n\ntotal : %d\n\n",sum);
    return 0;
}//原来这么简单

总有人比你努力,可怕的是比你牛的人比你还努力。
2012-07-01 10:24
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
程序代码:

#include <stdio.h>

int main ()
{
    int change (char *p);
    char arr[100];

    scanf("%s",arr);
    printf("个数%d\n", change(arr));
   
    return 0;
}

int change (char *p)
{

    //char *str = p;
    int i = 0;
    while (*p != '\0')
    {

        if (*p >= 97 && *p <= 122)
        {
            //*str = *p;
            printf ("%c",*p);    //这已经搞定了,可是怎么统计字母总数呢
            i++;
            //str++;
        }
        p++;
    }
    return i;
}



可以用函数的返回值传递这个个数

简单起见我没用你那个str、、
2012-07-01 10:27
admin_xyz
Rank: 2
等 级:论坛游民
帖 子:195
专家分:77
注 册:2012-6-24
收藏
得分:0 
额...我写的程序怎么这么烂...跟版主不能比...逻辑思维不行吗............

总有人比你努力,可怕的是比你牛的人比你还努力。
2012-07-01 14:46
快速回复:基础问题
数据加载中...
 
   



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

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