Arrays C:在动态分配的字符数组中打印最长的字符串
我已经创建了一个动态分配的字符数组,并从.txt文件中读取了几行文本。如何找到数组中最长的“字符串” .txt文件如下所示: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]
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()
获取行的长度,并将其与迄今为止读取的最长行进行比较。