2014-10-20 82 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; 
}