c - 打印出c中最长的字符串

标签 c

给定任意数量的程序参数输入命令行,计算每个参数的长度,最后输出最长的字符串。这是我的代码,但它似乎是错误的。

#include <stdio.h>
#include <string.h>

int main(int argc, char *argv[]) {
  size_t maxlen = 0, len;
  int i;
  int longest;


  for (i = 1; i < argc; i++) {
   len = strlen(argv[i]);
     if (len > maxlen) 
       longest = argv[i];
  }

  printf("The longest string is %s. \n", longest);

  return 0;
}

最佳答案

错误:

一个。 char max; ... max = strlen(argv[i]);错误的; strlen()返回 size_t而不是 char .

两个:if(max < argv[i])同样错误的是,您将字符串的长度与指向字符串的指针进行比较。那甚至没有意义。你可能想要的是

size_t maxlen = 0, len;
int i, maxindex = 0;

for (i = 1; i < argc; i++) {
    len = strlen(argv[i]);
    if (len > maxlen) {
        maxlen = len;
        maxindex = i;
    }
}

printf("The longest string is '%s'\n", argv[maxindex]);

关于c - 打印出c中最长的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12921064/

相关文章:

c - 如何将 Unicode 代码点打印为 C 中的字符?

使用 fgets 的输出调用 fopen

C:小端

c - 如何以毫秒为单位获取 C 中耗时? ( window )

c - Libav(ffmpeg)容器编解码器时基和流时基的目的是什么?

C头文件之间的循环依赖

c - 读入文件到字符串

c - 段错误 (C)

c - 在 C 中排列不需要的字符

c - 无法访问结构数据