| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 685 人关注过本帖
标题:小程序改个错!
只看楼主 加入收藏
晨曦的朝阳
Rank: 1
等 级:新手上路
帖 子:66
专家分:0
注 册:2008-1-24
收藏
 问题点数:0 回复次数:9 
小程序改个错!
该程序运行不了,烦高手看看!

/* 给定字符串STRING(长度小于50,由字母和数字组成)
*  1. 将串中小写字符转化成大写
*  2. 提取出所有数字
*  3. 提取出所有字母
*  4. 如果STRING以数字开头,则打印提取出的数字;
*     如果STRING以字母开头,则打印提取出的字母;
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define STRING "FdfsJK32f47h5"
#define PRINT_ARRAY(x) if((x) != NULL) printf("%s\n", (x))
char *pAll=NULL;
void LowToUp(char * str)
{
    while(str != NULL)
    {
        if((*str >= 'a')&&(*str <= 'z'))
        {
            *str += 'A' - 'a';
        }
        str++;
    }
}

int GetMemory(char* p)
{
    p = (char*)malloc(strlen(STRING)+1);
    pAll=p;
    if(p == NULL) return -1;
    else return 1;
}

char * GetNumber(char * str)
{
    char ret[100];
    int i = 0;
    while(str != NULL)
    {
        if((*str >= '0')&&(*str <= '9'))
        {
            ret[i++] = *str;
        }
        str++;
    }
    ret[i] = '\0';
    return ret;
}

char * GetLetter(char * str)
{
    char ret[100];
    int i = 0;
    while(str != NULL)
    {
        if((*str >= 'A')&&(*str <= 'Z'))
        {
            ret[i++] = *str;
        }
        str++;
    }
    ret[i] = '\0';
    return ret;
}

int main()
{
   
    char *pNumber=NULL;
    char *pLetter=NULL;

    LowToUp(STRING);    //1. 将串中小写字符转化成大写
    if(GetMemory(pAll) == 1)    //内存分配
    {
        strcpy(pAll, STRING);
        pNumber = GetNumber(pAll);    //2. 提取出所有数字
        pLetter = GetLetter(pAll);    //3. 提取出所有字母
        if((pAll[0] >= '0')&&(pAll[0] <= '9')) PRINT_ARRAY(pNumber);    //打印
        else PRINT_ARRAY(pLetter);
        free(pAll);
        return 1;
    }
    else
    {
        printf("No Memory can be used!\n");
        return -1;
    }
}
搜索更多相关主题的帖子: include 字符串 字母 
2008-06-17 13:16
flyue
Rank: 10Rank: 10Rank: 10
来 自:江南西道
等 级:贵宾
威 望:19
帖 子:3465
专家分:1563
注 册:2006-6-20
收藏
得分:0 
你不是发过了吗?怎么还发?

天之道,损有余而补不足.人之道则不然,损不足以奉有余.孰能有余以奉天下,唯有道者.
2008-06-17 13:20
永夜的极光
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:2721
专家分:1
注 册:2007-10-9
收藏
得分:0 
晕,不是昨天刚改过...
https://bbs.bccn.net/thread-219388-1-2.html

从BFS(Breadth First Study)到DFS(Depth First Study)
2008-06-17 13:22
flyue
Rank: 10Rank: 10Rank: 10
来 自:江南西道
等 级:贵宾
威 望:19
帖 子:3465
专家分:1563
注 册:2006-6-20
收藏
得分:0 
就是。我还说了,常量是不能修改的

天之道,损有余而补不足.人之道则不然,损不足以奉有余.孰能有余以奉天下,唯有道者.
2008-06-17 13:26
晨曦的朝阳
Rank: 1
等 级:新手上路
帖 子:66
专家分:0
注 册:2008-1-24
收藏
得分:0 
不好意思,没看到有人发了,呵呵!
2008-06-17 13:34
flyue
Rank: 10Rank: 10Rank: 10
来 自:江南西道
等 级:贵宾
威 望:19
帖 子:3465
专家分:1563
注 册:2006-6-20
收藏
得分:0 
貌似你们是同学?

天之道,损有余而补不足.人之道则不然,损不足以奉有余.孰能有余以奉天下,唯有道者.
2008-06-17 13:55
MODIFIER
Rank: 1
来 自:济南
等 级:新手上路
帖 子:5
专家分:0
注 册:2008-6-17
收藏
得分:0 
同胞们,我是第一次在论坛里转,不过觉得这个论坛还可以,大家以后要多多帮助啊
2008-06-17 15:45
晨曦的朝阳
Rank: 1
等 级:新手上路
帖 子:66
专家分:0
注 册:2008-1-24
收藏
得分:0 
乘风界水已经毕业了,我只是大一的,呵呵。我加了一个C的群,他也正好在里面,有机会的话我就请教请教他,这题就是他给的,说可以考验一下大家。我改成了如下代码,不过还是不行,麻烦帮我看下!
/* 给定字符串STRING(长度小于50,由字母和数字组成)
*  1. 将串中小写字符转化成大写
*  2. 提取出所有数字
*  3. 提取出所有字母
*  4. 如果STRING以数字开头,则打印提取出的数字;
*     如果STRING以字母开头,则打印提取出的字母;
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char *pAll=NULL;
char *pNumber=NULL;
char *pLetter=NULL;

void LowToUp(char *str)
{
    int i;
    for(i=0;str!=NULL;i++)
    {
        if((str[i] >= 'a')&&(str[i] <= 'z'))
        {
            str[i] += ('A' - 'a');
        }
        pAll[i]=str[i];
      
    }
    pAll[i]='\0';
    
}

int GetMemory(char *str)
{
    char *p = (char*)malloc(strlen(str)+1);
    pAll=p;
    if(p == NULL) return -1;
    else return 1;
}

void GetNumber()
{
    char ret[100];
    int i = 0,j=0;
    for(;pAll!=NULL;i++)
        if((pAll[i] >= '0')&&(pAll[i] <= '9'))
        {
            ret[j++] = pAll[i];
        }
        
 
    ret[j]='\0';
    pNumber=ret;
}

void GetLetter()
{
    char ret[100];
    int i = 0,j=0;
    for(;pAll!=NULL;i++)
    if((pAll[i] >= 'A')&&(pAll[i] <= 'Z'))
        {
            ret[j++] = pAll[i];
        }
      
   
    ret[j] = '\0';
    pLetter=ret;
}

int main()
{
  
    char *str="FdfsJK32f47h5";
    //1. 将串中小写字符转化成大写
    if(GetMemory(str) == 1)    //内存分配
    
    {
        LowToUp(str);
        GetNumber();    //2. 提取出所有数字
        GetLetter();    //3. 提取出所有字母
     
    }
    else
    {
        printf("No Memory can be used!\n");
        return -1;
    }
    if(pNumber!=NULL)
    printf("the Number are:%s\n",pNumber);
    if(pLetter!=NULL)
    printf("the Letter are:%s\n",pLetter);
    getchar();
    return 0;
}
2008-06-17 16:34
永夜的极光
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:2721
专家分:1
注 册:2007-10-9
收藏
得分:0 
char *str="FdfsJK32f47h5";
你这样定义还是字符串常量

从BFS(Breadth First Study)到DFS(Depth First Study)
2008-06-17 17:27
晨曦的朝阳
Rank: 1
等 级:新手上路
帖 子:66
专家分:0
注 册:2008-1-24
收藏
得分:0 
那如果再定义char *p=str;然后下面的str都换成p,这样子呢,此时的p是变量了?结果还是不对,真汗
2008-06-17 21:19
快速回复:小程序改个错!
数据加载中...
 
   



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

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