小程序改个错!
该程序运行不了,烦高手看看!/* 给定字符串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;
}
}