标题:基础问题
取消只看楼主
admin_xyz
Rank: 2
等 级:论坛游民
帖 子:195
专家分:77
注 册:2012-6-24
结帖率:97.3%
 问题点数:0 回复次数:6 
基础问题
#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
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
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
admin_xyz
Rank: 2
等 级:论坛游民
帖 子:195
专家分:77
注 册:2012-6-24
得分:0 
额...我写的程序怎么这么烂...跟版主不能比...逻辑思维不行吗............

总有人比你努力,可怕的是比你牛的人比你还努力。
2012-07-01 14:46



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-372537-1-1.html




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

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