解释一下下列代码:#include <stdio.h> #include <string.h> #define MAX_STR_LEN 100 #define MAX_STR_NUM 1000 int main() { char strings[MAX_STR_NUM][MAX_STR_LEN]; int i = 0; while (i < MAX_STR_NUM && fgets(strings[i], MAX_STR_LEN, stdin) != NULL) { i++; } int j, k; char temp[MAX_STR_LEN]; for (j = 0; j < i-1; j++) { for (k = 0; k < i-j-1; k++) { if (strcmp(strings[k], strings[k+1]) > 0) { strcpy(temp, strings[k]); strcpy(strings[k], strings[k+1]); strcpy(strings[k+1], temp); } } } FILE *fp = fopen("sorted_strings.txt", "w"); if (fp == NULL) { printf("Failed to open file.\n");
时间: 2024-04-20 19:22:50 浏览: 123
C代码教程1显示#include <stdio.
这段代码的功能是从标准输入中读取多个字符串,然后对这些字符串进行排序,并将排序后的结果写入到一个名为"sorted_strings.txt"的文件中。
首先,定义了两个宏常量MAX_STR_LEN和MAX_STR_NUM,分别表示字符串的最大长度和最大数量。
接下来,在主函数中声明了一个二维字符数组strings[MAX_STR_NUM][MAX_STR_LEN],用于存储输入的多个字符串。同时,定义了变量i并初始化为0,用于记录输入的字符串数量。
然后,使用while循环读取输入的字符串,并将其存储到strings数组中。循环条件限制了字符串数量不能超过MAX_STR_NUM,并且fgets函数的返回值不为NULL(即读取成功)时才进行循环体内的操作。每次循环结束后,i自增1。
接下来,使用冒泡排序算法对字符串进行排序。使用两层嵌套的for循环遍历strings数组,每次比较相邻的两个字符串,如果前面的字符串大于后面的字符串,则交换它们的位置。这里使用了strcmp函数来比较字符串的大小关系。
最后,使用fopen函数创建一个名为"sorted_strings.txt"的文件,并以写入模式打开。如果文件打开失败,则输出错误信息。
整个程序的功能是读取多个字符串并进行排序,并将排序结果写入文件。排序使用的是冒泡排序算法。
阅读全文