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] = '\0';
printf("%s\n\n", pogg);
我尝试使用带有自定义比较器功能的 qsort 购买我的输出只是 ^2 行(平方)。
解决方案
使用 逐行读取文件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);
推荐阅读
- javascript - Javascript遍历类onmouseover
- javascript - 自动更改电子中的键盘输入
- angular - 从打字稿中的数组中过滤
- python - Yelp API 仅响应 50 个结果
- python - 我们的性能和准确性是否比不使用 `pytorch.nn.Sequnetial` 时更低,如果是,为什么?
- java - 码头工人 | 无法访问jarfile?
- android - 如何使用 javascript 中的密钥库对已编译的 apk 文件进行签名?
- reactjs - 如何在 ReactJS 的不同页面上显示不同样式的导航栏?
- python - 在 Python 中的类属性之后 -> 表示什么?
- python - 在 jupyter 中使用 conda env