请放弃掉已弃用的函数,优化一下这段代码
时间: 2024-02-12 19:09:03 浏览: 24
好的,我来优化一下这段代码,尽可能避免使用已经被标记为“已弃用”的函数。
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void sort_strings(char **strings, int num)
{
int i, j;
char *temp;
for (i = 0; i < num - 1; i++) {
for (j = i + 1; j < num; j++) {
if (strcmp(strings[i], strings[j]) < 0) {
temp = strings[i];
strings[i] = strings[j];
strings[j] = temp;
}
}
}
}
int main()
{
char **strings = malloc(5 * sizeof(char *));
int i;
// 输入五个字符串
for (i = 0; i < 5; i++) {
printf("请输入第%d个字符串:", i + 1);
char str[100];
scanf("%s", str);
strings[i] = malloc((strlen(str) + 1) * sizeof(char));
strcpy(strings[i], str);
}
// 排序
sort_strings(strings, 5);
// 输出结果
printf("排序后的字符串:\n");
for (i = 0; i < 5; i++) {
printf("%s\n", strings[i]);
}
// 释放内存
for (i = 0; i < 5; i++) {
free(strings[i]);
}
free(strings);
return 0;
}
```
在这个优化后的程序中,我们使用了动态内存分配函数 `malloc` 来分配字符串指针数组 `strings` 和每个字符串的内存。在输入字符串时,我们使用了 `strcpy` 函数来复制字符串,而不是使用 `strdup` 函数。在程序的最后,我们同样使用了 `free` 函数来释放动态分配的内存。
这样,我们避免了使用已经被标记为“已弃用”的函数,使得代码更加健壮和可靠,同时也提高了代码的可移植性和兼容性。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)