C语言问题求助

求助求助,实在做不出拉!~... 求助求助,实在做不出拉!~ 展开
 我来答
bignode
推荐于2016-08-12 · TA获得超过2664个赞
知道大有可为答主
回答量:1427
采纳率:75%
帮助的人:536万
展开全部
//我也来一个,所有字符串函数自写

#include <stdio.h>
#include <malloc.h>
#define MAX 255

//字符串比较
int str_cmp(char * str1,char *str2)
{
while( *str1 == *str2) str1++,str2++;
return *str1 - *str2;
}

//字符串长度
int str_len(char*str)
{
int len = 0;
while(*str)
str++,len++;
return len;
}

//字符串复制
void str_copy( char *tar, char *src)
{
while( *src)
*tar++ = *src++;
*tar = 0;
}

//交换字符串指针
void str_swap( char*& s1,char*& s2)
{
char * s = s1;
s1 = s2;
s2 = s;
}

//输入n个字符串到 strs 中
void str_input( char ** strs, int n)
{
int i;
char buff[MAX];
for(i = 0;i< n;i++)
{
scanf("%s",buff); 
*strs = (char *) malloc( str_len( buff)+1);
str_copy( *strs,buff);
strs++;
}
}

//对strs中的n个字符串排序
void str_sort(char ** strs, int n)
{
int i,j;
for( i = 0;i< n-1;i++)
for(j = i+1;j<n;j++)
if( str_cmp( strs[i],strs[j]) > 0)
str_swap( strs[i],strs[j]);
}

//输出n个字符串
void str_output(char ** strs, int n)
{
int i = 0;
while(i++<n)
printf("%s ", *strs++);
}

//释放n个字符串所占空间,程序退出自然也会释放,但是自己释放是个好习惯
void str_release(char ** strs, int n)
{
int i = 0;
while(i++<n)
free(*strs++);
}

int main()
{
int n;
char ** strs;

scanf("%d",&n); //输入字符串个数
strs = (char**)malloc( sizeof(char*) * n);//申请一个存放n个指针的内存

str_input( strs, n); //输入
str_sort( strs,n);   //排序
str_output( strs,n); //输出
str_release( strs,n);//释放字符串内存

free( strs);         //释放指针所占内存

return 0;
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
White_MouseYBZ
2014-12-30 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6469万
展开全部
//#include "stdafx.h"//vc++6.0加上这一行.
#include "stdio.h"
#include "string.h"
#include "stdlib.h"
int main(void){
    char **pn,tmp[20],*p;
    int n,lt,i,j,k;
    printf("How many people?\nn=");
    scanf("%d",&n);
    if((pn=(char **)malloc(n*sizeof(char *)))==NULL){
        printf("Failed to create the pointer array...\n");
        exit(0);
    }
    printf("Input %d name(s)...\n",n);
    for(i=0;i<n;i++){
        scanf("%s",tmp);
        lt=strlen(tmp)+1;
        if((pn[i]=(char *)malloc(lt*sizeof(char)))==NULL){
            printf("Application memory failure...\n");
            exit(0);
        }
        strcpy(pn[i],tmp);
    }
    for(i=0;i<n;i++){
        for(k=i,j=k+1;j<n;j++)
            if(strcmp(pn[k],pn[j])>0) k=j;
        if(k!=i){
            p=pn[i];
            pn[i]=pn[k];
            pn[k]=p;
        }
    }
    printf("\nThe result is at following:\n");
    for(i=0;i<n;printf("%s ",pn[i++]));
    for(i=0;i<n;free(pn[i++]));
    free(pn);
    printf("\n");
    return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2014-12-30
展开全部
#include<stdio.h>
#include<conio.h>
int cmp(char* a, char*b){
if (strcmp(a, b) < 0)return 1;
return 0;

}
int main(int argc, char* argv[])
{
char **p ;//二级指针
char a[250];
int n,i,len;
scanf("%d", &n);
p = (char**)malloc(sizeof(char*)*n);
for (i = 0; i < n; i++)
{
scanf("%s", a);
len = strlen(a);
*(p + i) = (char*)malloc(sizeof(char)*len+1);
strcpy(*(p + i), a);
}
qsort(p,len,sizeof(char*),cmp);

for (i = 0; i < n;i++)
{
printf("%s\n", *(p + i));
}
return 0;
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式