簡體   English   中英

在C中找到最長的單詞

[英]Find Longest Word in C

我想通過采用命令行參數從字符串數組中找到最長的字符串。 我可以接收命令行參數,但是邏輯出了什么問題?

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

int main(int argc, char *argv[]) {

    int i;
    char *c = argv[1];
    int maxSize = strlen(argv[1]);

    for(i=2;i<=argc;i++){
        int len = strlen(argv[i]);
        if(len>maxSize){
            maxSize = len;
            c = argv[i];
        }
    }

    printf("Max length string : %s", c);
}

您的循環正在陣列外運行。

似乎您了解argc和argv的含義,但是您錯過了argc是輸入參數的數量,包括進程的名稱。

對於以下輸入情況,您將為argc收到5,最后一個參數字符串'flow'在argv [4]中找到。

a.out您好statck流量過大

但是,您的代碼將遇到argv [5],這不是argments的一部分,並且可能導致未定義的行為。

代碼中的循環應更改為

for(i=1; i<argc; i++)
{
}
#include <stdio.h>
#include <string.h>

int main(int argc, char *argv[]) {
    if (argc == 1) {
        printf("No arguments provided");
        return 1;
    }

    int maxLength = 0;
    int maxIndex = 0;

    int i;
    char* word;
    for (i = 1; i < argc; i++) {
        word = argv[i];
        int length = strlen(word);
        if (length > maxLength) {
            maxLength = length;
            maxIndex = i;
        }
    }

    printf("Max length is %d for string: %s\n", maxLength, argv[maxIndex]);
    return 0;
}

這是您的代碼的一些注釋,希望對您有所幫助。

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM