簡體   English   中英

查找最長的字符串名稱和長度

[英]Finding the longest string name and length

我正在嘗試編寫一個程序,允許我在輸入后找到最長的字符串名稱。 至今:

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

int main(void){
    int i;
    int tot[20];
    int len; /*length of string*/
    char nam[20]; /*the variable the user will be entering*/
    char nnam[20]; /*new name variable.
                   where the longest is kept*/

    for (i = 0; i < 6; i++){ /*user input of 6 strings*/
        printf("Enter a string: ");
        scanf("%s", nam);

        len = strcmp(nnam, nam); /*comparing length of input 
                                 to stored string*/

        if (len > 0){ /*condition*/
            strcpy(nnam, nam); /*should copy the largest
                               value into nnam*/
        }
    }

    printf("The longest string is: %s\n", nnam);
    printf("The string length is: %d\n", strlen(nnam));

    return 0;
}

例如,這似乎起作用:

FIRST OUTPUT:
Enter a string: red
Enter a string: red
Enter a string: purple
Enter a string: red
Enter a string: red
Enter a string: red
The longest string is: purple
The string length is: 6

但是后來發生了:

SECOND OUTPUT:
Enter a string: blue
Enter a string: black
Enter a string: red
Enter a string: purple
Enter a string: gold
Enter a string: green
The longest string is: black
The string length is: 5

和這個:

THIRD OUTPUT:
Enter a string: red
Enter a string: red
Enter a string: purple
Enter a string: gold
Enter a string: red
Enter a string: red
The longest string is: gold
The string length is: 4

不知道這里發生了什么。 有什么建議么?

您必須比較它們的長度而不是字符串本身:

scanf("%s", nam);

if (strlen(nam) > strlen(nnam)){
    strcpy(nnam, nam);
}

暫無
暫無

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

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