小霖 發問時間: 電腦與網際網路程式設計 · 1 0 年前

c語言字串問題 幫幫忙

輸入一個字串:bbbbXXXaaaaXXXXXXXjkkkadaXXXXkjflddXXXcccccd

輸出~~~把有X的地方截斷~~~~然後~~~由小至大排好~~~:

aaaa

bbbb

cccccd

jkkkada

kjfldd

#include <stdio.h>

#include <stdlib.h>

int inputdata(char *,char *,char **);

void sortstring(char **,int );

void printstring(char **, int);

main()

{

int i,j,n,len;

char *namestring[100];

char **ptr=namestring;

char a[80],b[80];

printf(\"輸入一字串\\n\");

gets(a);

n=inputdata(a,b,ptr);

sortstring(ptr,n);

printf(\"由大至小\\n\");

printstring(ptr,n);

getch();

}

int inputdata(char *a,char *b,char **ptr) //分開

{ int n=0,len;

char *p,*q;

len = strlen( );

*(ptr+n) = malloc(sizeof(char)*(len+1));

strcpy(*(ptr+n), );

n++;

return n;

}

void sortstring(char **ptr, int n) //排大小

{

char *p;

int i,j;

for (i=n-1; i>= 0; i--)

for ( j=0; j < i; j++)

if ( strcmp( ptr[j] , ptr[j+1]) > 0)

{

p = ptr[j];

ptr[j] = ptr[j+1];

ptr[j+1] = p;

}

}

void printstring(char **ptr , int n) //輸出

{

int i;

for (i=0; i<n; i++)

printf(\"%s\\n\", ptr[i]);

}

上面是我的程式

int inputdata(char *a,char *b,char **ptr) ←這一段我不會寫

請高手幫我一下謝謝 !!

有更好的方法也可以加上去!!!!

1 個解答

評分
  • 最佳解答

    #include <stdio.h>

    #include <stdlib.h>

    int inputdata(char *,char [],char **);

    void sortstring(char **,int );

    void printstring(char **, int);

    main()

    {

    int n;

    char *namestring[1000];

    char **ptr=namestring;

    char a[1000],b[1000];

    printf("輸入一字串\n");

    gets(a);

    n=inputdata(a,b,ptr);

    sortstring(ptr,n);

    printf("由大至小\n");

    printstring(ptr,n);

    getch();

    }

    int inputdata(char *a,char b[],char **ptr)

    { int i=0,n=0,ok,len;

    while(*a)

    {

    while((*a!=' ')&&(*a))

    {

    b[i++]=*a++;

    b[i]='\0';

    ok=1;

    }

    if(ok==1)

    {

    len=strlen(b);

    *(ptr+n)=malloc(sizeof(char)*(len+1));

    strcpy(*(ptr+n),b);

    ok--; n++; i=0;

    }

    else

    a++;

    }

    return n;

    }

    void sortstring(char **ptr, int n)

    {

    char *p;

    int i,j;

    for(i=0; i<n; i++)

    for(j=0;j<n-1; j++)

    if(strcmp( ptr[j] , ptr[j+1]) > 0)

    {

    p = ptr[j];

    ptr[j] = ptr[j+1];

    ptr[j+1]=p;

    }

    }

    void printstring(char **ptr , int n)

    {

    int i;

    for (i=0; i<n; i++)

    {

    printf("%s\n", ptr[i]);

    printf("\n");

    }

    }

    參考資料: ..
還有問題?馬上發問,尋求解答。