永发信息网

C语言 char** p 初始化

答案:3  悬赏:0  手机版
解决时间 2021-03-28 22:42
  • 提问者网友:不要迷恋哥
  • 2021-03-28 11:56
C语言 char** p 初始化
最佳答案
  • 五星知识达人网友:十鸦
  • 2021-03-28 12:20
呵呵,我做完字符串处理,你不会做输入处理了。下面是我做输入处理的方法。
#include
#include
bool GetDigit(const char*src,int &digit)//字符串中有数字串时,求出第一个连续的数字串,后面的忽略
{
while(*src)
{
if(*src>='0'&&*src<='9')//src指向首个数字
{

int sum=0;
while(*src>='0'&&*src<='9')//取所有的数字
{
sum=sum*10+(*src-'0');
src++;
}
digit=sum;//提取数字
return true;
}
src++;
}
return false;
}

int Compare(const char* p1,const char* p2)//p1>p2 return 1;p1==p2 return 0;p1{
int digit1,digit2;
bool bflag1,bflag2;
bflag1=GetDigit(p1,digit1);
bflag2=GetDigit(p2,digit2);
if(bflag1&&bflag2) //两个字符串中都有数字
{
if(digit1>digit2) return 1;
else if(digit1==digit2) return 0;
else return -1;
}
if(!bflag1&&!bflag2)//两个字符串中都没有数字
{
return strcmp(p1,p2);
}
if(bflag1)//有一个字符串中有数字
return 1;
else
return -1;
}
void Sort(char**p,int num)//选择一种排序方法,此处各位可以改进
{
for(int i=0;i {
for(int j=i+1;j {
if(Compare(p[i],p[j])==1)
{
char* temp=p[i];
p[i]=p[j];
p[j]=temp;

}
}

}
}
void Print(char**p,int num)
{
for(int i=0;i cout< cout<}
void Input(char**&p,int num)//注意此函数分配了堆内存,用完要做回收处理
{
if(num<=0) cout<<"exception,exit!"<p=new char*[num];
for(int i=0;ip[i]=new char[1024];
cout<<"请输入每个字符串后,按回车或按空格"<for(i=0;icin>>p[i];
}
void main()
{
// char* p[]={"abc#", "abc1","abc10","abcd","abc2","abc"};//此处作了简化,直接定义了,没有做出输入处理,各位可以改进
char **p=NULL;
int num;
cout<<"请输入要处理的字符串数量:"< cin>>num;

Input(p,num);
Sort(p,num);//排序
Print(p,num);//输出

//这里应该回收堆内存,防止内存泄露。
}
全部回答
  • 1楼网友:人類模型
  • 2021-03-28 13:23
void main()
{
char p[10][100];
int i;
i=0;
while(scanf("%s",p[i])!=EOF)
{
i++;
}
Sort(p,6);//排序
Print(p,6);//输出
}追问不行
要用char** p
和Sort和Print的函数有关
void Print(char** p,int num)
void Sort(char** p,int num)追答你用我的方法可以的追问试过,编译不对追答额。报什么错误。追问1>d:\my documents\visual studio 2010\projects\1\1\2878字串排序.cpp(90): error C2664: “Sort”: 不能将参数 1 从“char [100][100]”转换为“char **”
1> 与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换
1>d:\my documents\visual studio 2010\projects\1\1\2878字串排序.cpp(91): error C2664: “Print”: 不能将参数 1 从“char [100][100]”转换为“char **”追答个人建议你的程序用string p[10]。这样更方便点。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯