Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays C:在动态分配的字符数组中打印最长的字符串_Arrays_C - Fatal编程技术网

Arrays C:在动态分配的字符数组中打印最长的字符串

Arrays C:在动态分配的字符数组中打印最长的字符串,arrays,c,Arrays,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]

我已经创建了一个动态分配的字符数组,并从.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(平方)行。

我认为您需要使用函数“strlen”,然后将长度存储在数组中并进行比较

maxlen = arrayOfLengths[0];
while (i !=0) {

len = strlen(arrayOflengths[i]);
if (len > maxlen) {
    maxlen = len;
    maxindex = i;}

这有点像伪代码,但我认为它会给你一些想法。

使用
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);

fgets()
阅读每一行。使用
strlen()
获取行的长度,并将其与迄今为止读取的最长行进行比较。