c语言,输入6个字符串,求最大串和最小串

输入6个字符串,输出最大串及最小串,如
输入:
hello,world
c
java
c++
#c
cp
运行结果:
最大串:java
最小串:c

以下是我的代码,请问哪里有错,怎么改

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 7
#define M 15

int main()
{
    int i,j,changdu[N];
    char *m[M],min[M],max[M];
    printf("input 6 strings:\n");
    for(i = 0; i < 6; i++)
    {
        scanf("%s",&m[i]);
    }
    strcpy(min[M],m[0]);
    strcpy(max[M],m[0]);
    for(i = 0; i < 5;i++)
    {
        changdu[i] = strlen(m[i]);
        for(j = i+1; j < 6 ; j++)
        {
            changdu[j] = strlen(m[j]);
            if(changdu[i] < changdu[j])
            {
                strcpy(max[M] , m[j]);
                strcpy(min[M] , m[i]);

            }
        }
    }
    printf("max string is %s,min is %s",max[M],min[M]);

}


各位人家都给分了,稍微耐心点嘛,代码改了一下你看看,基本按照你思路弄的:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 7
#define M 15

int main()
{
    int i, j, changdu[N];
    char m[N][M], min[M], max[M];
    int maxlen, minlen;
    printf("input 6 strings:\n");
    for (i = 0; i < 6; i++)
    {
        scanf("%s", &m[i]);
    }
    strcpy(min, m[0]);
    strcpy(max, m[0]);

    changdu[0] = strlen(m[0]);
    maxlen = changdu[0];
    minlen = changdu[0];
    for (j = 1; j < 6; j++)
    {
        changdu[j] = strlen(m[j]);
        if (maxlen < changdu[j])
        {
            strcpy(max, m[j]);
            maxlen = changdu[j];
        }
        else if (minlen > changdu[j])
        {
            strcpy(min, m[j]);
            minlen = changdu[j];
        }
    }

    printf("max string is %s,min is %s", max, min);

}

执行结果,最长的可不是java是第一行的:
图片说明

看这一句:if(changdu[i] < changdu[j])
字符串不能用<、>、==比较大小,要用strcmp函数,这样用:strcmp(字符串1,字符串2)。如果字符串1<字符串2,返回负数;如果相等,返回0;如果大于,返回正数。

请教:C语言怎么将字符“3 5 13-18”数字转换为3 5 13 14 15 16 17 18数字,“13-18”弄不好

两个问题,一个是字符串比较的问题
一个是 char *m[M],这里你并没有给m分配空间。它只是一个指针
你下面就开始往里面输入了

懒得再重写一遍了,下面的链接可供楼主参考:输入6个字符串,输出最小串及最大串。

至于你的程序问题,楼上几位该说的也说了,关于楼主问的字符与数字间的转换有专文探讨,链接如下:c/字符串,字符转数字,数字转字符

实在懒得再重新总结一遍,楼主自己去领悟吧