本文介绍了与冒泡排序算法对字符串进行排序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这code存储在一个整数变量字和词语的一个multidimensionnel字符串的编号,然后按字母顺序使用排序功能的话。我的问题是在函数调用。

 #包括LT&;&stdio.h中GT;
#包括LT&;&string.h中GT;
无效的排序(字符* [50],INT);
诠释的main()
{
    INT I,N = 0;
    个char [50] [10];    scanf的(%d个,&放大器; N); // scaning单词的数目    对于(i = 0; I< = N;我++)// scaning的话
    得到(S [I]);    排序(S,N);    对于(i = 0; I< = N;我++)//打印文字整理
    的printf(%S \\ N,S [I]);
}
无效的排序(字符* S [50],INT N)
{
    INT I,J,CMP;
    炭TMP [1] [10];    //话冒泡排序
    对于(i = 0; I< N;我++)
        为(J = 0; J< N-1; J ++)
        {
            CMP = STRCMP(S [J],S [D + 1]);            如果(CMP大于0)
            {
                的strcpy(TMP [0],S [J + 1]);
                的strcpy(S [D + 1],S [J]);
                的strcpy(S [J],TMP [0]);
            }
        }
}


解决方案

打开你的警告。 个char [50] [50] 是无法转换为的char *

试试这个:

 无效排序(CHAR(*)[50],INT);

这会告诉你在一个指针传递给50个字符至少有一个缓冲的编译器。
这是多维数组衰变时传入功能。

和进一步摆脱你的愚蠢观念的的char [] 相同的char * ,由于某种原因仍在教随处可见,阅读:

This code stores the number of words in an integer variable and the words in a multidimensionnel string then sorts the words alphabetically using a function. The problem I have is in the function call.

#include<stdio.h>
#include<string.h>
void sort(char*[50],int);
int main ()
{
    int i,n=0;
    char s[50][10];

    scanf("%d",&n);//scaning the number of words

    for(i=0;i<=n;i++)//scaning the words
    gets(s[i]);

    sort(s,n);

    for(i=0;i<=n;i++)//printing the words sorted
    printf("%s\n",s[i]);
}
void sort(char*s[50],int n)
{
    int i,j,cmp;
    char tmp[1][10];

    //bubble sorting of words
    for(i=0; i<n; i++)
        for(j=0; j<n-1; j++)
        {
            cmp=strcmp(s[j],s[j+1]);

            if(cmp>0)
            {
                strcpy(tmp[0],s[j+1]);
                strcpy(s[j+1],s[j]);
                strcpy(s[j],tmp[0]);
            }
        }
}
解决方案

Turn on your warnings. char s[50][50] is not convertible to char*.

Try this:

void sort(char(*)[50],int);

This tells the compiler you pass in a pointer to at least one buffer of 50 characters.This is what multidimensional arrays decay to when passed into functions.

And to further rid you of the silly notion that "char[] is the same as char*", which for some reason is still taught everywhere, read this: http://c-faq.com/aryptr/aryptr2.html

这篇关于与冒泡排序算法对字符串进行排序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-20 12:36
查看更多