c语言代码如下:
#include <stdio.h>
#include <string.h>
#define MAX_LEN 110
int main()
{
char str[MAX_LEN]; // 存储输入的字符串
char *string[MAX_LEN]; // 存储输入的所有字符串的指针数组
int len = 0; // 记录输入的字符串数
// 连续读入字符串,遇到空行停止输入
while (gets(str) != NULL && str[0] != '\0')
{
// 为每一个字符串分配内存空间
string[len] = (char*)malloc((strlen(str)+1)*sizeof(char));
// 将字符串复制到指针数组中
strcpy(string[len], str);
len++;
}
// 对字符串数组按照字符串长度排序
for (int i = 0; i < len-1; i++)
{
for (int j = i+1; j < len; j++)
{
if (strlen(string[i]) < strlen(string[j]))
{
char *temp = string[i];
string[i] = string[j];
string[j] = temp;
}
}
}
// 输出排序后的字符串
for (int i = 0; i < len; i++)
printf("%s\n", string[i]);
// 释放内存空间
for (int i = 0; i < len; i++)
free(string[i]);
return 0;
}
上面的代码使用了动态内存分配的方式来存储字符串。在读入每一个字符串时,使用malloc
函数为该字符串分配内存空间,然后使用strcpy
函数将字符串复制到指针数组中。最后使用循环释放每一个字符串所占用的