2014-12-07 97 views
0

我試圖編寫一個程序,允許我在輸入後查找最長的字符串名稱。到目前爲止:查找最長的字符串名稱和長度

#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 

不知道發生了什麼這裏。有什麼建議麼?

+0

你怎麼能指望'LEN = STRCMP(nnam,NAM);'會給你的字符串長度的比較? – tod 2014-12-07 06:31:43

+0

我認爲這是因爲我認爲strcmp函數已經在查看字符串長度的差異了。猜猜我錯了。 – 2014-12-07 06:35:01

+1

我回滾了你的「固定」編輯。 「解決」問題,並添加「解決」到yheir標題,將Stack Overflow的目的作爲*問題和答案*存儲庫。作爲新成員,您可能不知道這一點;請參閱[入門教程](http://stackoverflow.com/tour)並閱讀[幫助中心](http://stackoverflow.com/help)。如果沒有現有答案有幫助,您可以自己添加答案。 – usr2564301 2014-12-07 10:33:24

回答

2

你要比較它們的長度不是字符串本身:

scanf("%s", nam); 

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

是什麼讓我不同於我寫的? – 2014-12-07 06:30:38

+0

那麼爲什麼我早些得到這些結果有什麼原因? – 2014-12-07 06:35:58

+0

首先,strcmp按字母順序比較字符串,而不是它們的長度,其次,當'i = 0'時,你比較nnam(甚至沒有定義那個時刻)和nam。 – OiciTrap 2014-12-07 06:36:45

相關問題