首页 > 解决方案 > C:在动态分配的字符数组中打印最长的字符串

问题描述

我制作了一个动态分配的字符数组,并从 .txt 文件中读取了一些文本行。如何在数组中找到最长的“字符串”?

.txt 文件如下所示:

usr
user
username
somerandomtext

这是我加载数组并打印它的代码:

char c = fgetc(rezultati);
printf("\n");
int x = 0;
while (c != EOF){
     pogg[x++] = c;
     c = fgetc(rezultati);
}
pogg[x] = '\0';
printf("%s\n\n", pogg);

我尝试使用带有自定义比较器功能的 qsort 购买我的输出只是 ^2 行(平方)。

标签: arraysc

解决方案


使用 逐行读取文件fgets(),并获取该行的长度。将最长的行保存在另一个变量中。

为此,您不需要所有行的数组。

#define MAXLEN 200

char buffer[MAXLEN], longest[MAXLEN] = "";
size_t maxlength = 0;

while(fgets(buffer, MAXLEN, stdin) {
    if (strlen(buffer) > maxlength) {
        strcpy(longest, buffer);
    }
}
printf("Longest line = %s\n", longest);

推荐阅读