2014-10-20 118 views
-5

嗨我正在嘗試正確的程序,但我有這麼多的困難。該計劃是我自己制定的挑戰。我想從用戶讀取6個字符串。然後我想創建一個函數,讓我比較這些字符串以找出哪個字符串大小不同。然後我想把這個信息傳遞給另一個函數,它將決定不同字符串的字符串長度。最後打印該值。這是我迄今爲止所做的(許多錯誤)。字符串比較和長度

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

char* diffFun(char* ,char*,char * ,char *,char * ,char *) 
    { 
    char *s1; 
    char *s2; 
    char *s3; 
    char *s4; 
    char *s5; 
    char *s6; 
    char *result; 
    if (strcmp(s2,s3,s4,s5,s6)<strcmp(s1)) 
      result = s1; 
    else if (strcmp(s1,s3,s4,s5,s6)<strcmp(s2)) 
      result s2; 
    return result; 
    } 

int main() 
    { 
    char *str1; 
    char *str2; 
    char *str3; 
    char *str4; 
    char *str5; 
    char *str6; 

    printf("Give me a string1:\n"); 
    str1 = readString(stdin); 
    printf("Give me a string2:\n"); 
    str2 = readString(stdin); 
    printf("Give me a string3:\n"); 
    str3 = readString(stdin); 
    printf("Give me a string4:\n"); 
    str4 = readString(stdin); 
    printf("Give me a string5:\n"); 
    str5 = readString(stdin); 
    printf("Give me a string6:\n"); 
    str6 = readString(stdin); 

    char *cond; 
    cond = diffFun((char* str1,char* str2,char* str3,char* str4,char* str5,char* str6); 
    printf("%ls",cond); 

    return 0; 
    } 
+0

'readString()'?是用戶定義的功能? – Haris 2014-10-20 13:47:23

+0

什麼是錯誤?同時告訴我們最低代碼不是全部。什麼是函數調用diffFun意味着什麼是char * inn行意味着做什麼?你正在從哪個教程中學習? – Mark 2014-10-20 13:48:22

+0

調用函數時,不應重複變量的類型。你也有雙「(」...「 當函數具有匿名參數並聲明函數內部的局部變量時,你可能會被未初始化的變量弄糊塗... strcmp有一個或五個參數是什麼意思 – 2014-10-20 13:50:42

回答

0

我不明白很好,但我覺得下面...

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

char* diffFun(int n, char *s[n]){ 
    int i, j; 
    char *result = s[0]; 
    size_t result_len = strlen(result); 

    for(i = 1; i < n; ++i){ 
     size_t len = strlen(s[i]); 
     if(result_len < len){ 
      result = s[i]; 
      result_len = len; 
     } else if(result_len == len && strcmp(result, s[i]) < 0){ 
      result = s[i]; 
     } 
    } 
    return result; 
} 

int main(void){ 
    char *str[6]; 
    int i; 
    for(i=0;i<6; i++){ 
     printf("Give me a string%d:\n", i+1); 
     str[i] = readString(stdin); 
    } 

    char *cond = diffFun(6, str); 
    printf("%s",cond); 

    return 0; 
}