字符二维动态数组创建

img

img

问题相关代码,请勿粘贴截图

#include
#include
#include
void input(char (*s)[20],int n);
int maxnum(char (*s)[20],int n);

int main()
{
int i,n,max;
char (cs)[20];
//printf("input n=");
scanf("%d",&n); //输入字符串的个数
getchar();
/
申请n×20的字符二维动态数组 */

input(cs,n);
max = maxnum(cs,n);
puts( cs[max]);
/* * 释放二维动态数组 * */ 

return 0;

}

void input(char (*s)[20],int n)
{

}
int maxnum(char (*s)[20],int n)
{

}

//input和maxnum求指点

已经写好,仅供参考!谢谢!

img

img

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void input(char (*s)[20], int n);
int maxnum(char (*s)[20], int n);

int main()
{
    int n, max;
    char (*cs)[20];

    scanf("%d", &n);
    getchar();

    /* 申请n个最大20字符二维动态数组 */
    if ((cs = (char (*)[20])malloc(n * 20)) == NULL)
    {
        exit(-1);
    }

    input(cs, n);
    max = maxnum(cs, n);
    puts(cs[max]);
    /* * 释放二维动态数组 * */
    free(cs);
    return 0;
}

void input(char (*s)[20], int n)
{
#if 0
    这紧接着的后面三行被注释了
    char (*tmp)[20] = s;
    while (n--)
        fgets((char *)tmp++, 20, stdin);
#endif

    int m = 0;
    char tmp[n][20];
    while (m < n)
    {
        fgets(tmp[m], 20, stdin);
        memcpy((char *)s, tmp[m], sizeof(tmp[0]));
        s++;
        m++;

    }

}

int maxnum(char (*s)[20], int n)
{
    int max = 0;
    for (int i = 0; i < n; i++)
    {
        if (strcmp((char*)(s + i), (char*)(s + max)) > 0 )
            max = i;
    }
    return max;
}

// input和maxnum求指点

给你找了一篇非常好的博客,你可以看看是否有帮助,链接:汇编创建二维数组