C语言求解!利用malloc函数开辟动态存储单元,顺序存放输入的10个字符串,
然后求10个字符串的最大值。
基于Monster 组和GPT的调写:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_LEN 100
int main() {
char *strings[10]; // 定义一个字符指针数组,用于存放字符串
char buf[MAX_LEN]; // 定义一个缓冲区,用于读取输入的字符串
int i;
// 读取10个字符串,并将它们存储在动态分配的内存中
for (i = 0; i < 10; i++) {
printf("请输入第%d个字符串:", i + 1);
scanf("%s", buf);
strings[i] = (char *) malloc(strlen(buf) + 1); // 分配动态内存
strcpy(strings[i], buf); // 将字符串复制到动态内存中
}
// 求最大值
char *max = strings[0]; // 假设第一个字符串为最大值
for (i = 1; i < 10; i++) {
if (strcmp(strings[i], max) > 0) {
max = strings[i]; // 更新最大值
}
}
printf("最大值为:%s\n", max);
// 释放动态内存
for (i = 0; i < 10; i++) {
free(strings[i]);
}
return 0;
}
#include <stdio.h>
#include <stdlib.h>
char ** Function1()
{
char **Arr = NULL;
char i = 0, j = 0;
char Brr[3][3] = {"123", "456", "789"};
Arr = (char **)malloc(sizeof(char *) * 3);
for (i = 0; i < 3; i++)
{
Arr[i] = (char *)malloc(sizeof(char) * 3);
for (j = 0; j < 3; j++)
{
Arr[i][j] = Brr[i][j];
}
}
return Arr;
}
int main(int argc, const char *argv[])
{
char **p = NULL;
int i = 0, j = 0;
p = Function1();
printf ("Arr[0][0] = %c\n", *(*p)); // 1
printf ("Arr[0][1] = %c\n", *(*(p) + 1)); // 2
printf ("Arr[0][2] = %c\n", *(*(p) + 2)); // 3
printf ("Arr[1][0] = %c\n", *(*(p + 1))); // 4
printf ("Arr[1][1] = %c\n", *(*(p + 1) + 1)); // 5
printf ("Arr[1][2] = %c\n", *(*(p + 1) + 2)); // 6
printf ("Arr[2][0] = %c\n", *(*(p + 2))); // 7
printf ("Arr[2][1] = %c\n", *(*(p + 2) + 1)); // 8
printf ("Arr[2][2] = %c\n", *(*(p + 2) + 2)); // 9
// 将保存每一行的指针先释放掉
for (i = 0; i < 3; i++)
{
if (*(p + i) != NULL)
{
free (*(p + i));
*(p + i) = NULL;
printf ("free *(p + %d) success!!!\n", i);
}
}
// 最后将保存整个二维数组的指针释放掉
if (p != NULL)
{
free (p);
printf ("free p success!!!\n");
}
return 0;
}