[英]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.