2013-07-27 49 views
0

因为两个小时,我试图修改我的程序来给它的参数(argv)而不是字符。argv和char的问题

所以,这里是我当前的代码:

int i; 
char ret[81]; 
    *ret = 1; 
    for (i = 0; i < argc; i++) 
    { 
      ret[0] = '\0'; 
      strcat(ret,argv[i]); 
    } 

此代码串连所有ARGS到一个char,printf的正在恢复良好的相同的结果,我的老焦的说法,但在我的代码不工作:

char test[] = "9...7....2...9..53.6..124..84...1.9.5.....8...31..4.....37..68..9..5.74147......."; 
     solve(test); //working 
     solve(ret); //not working 

我的应用程序是这样启动的: ./a.out“9 ... 7 ....”“2 ... 9..53”“.6..124 ..”“84 ...... 1.9“。 “5 ..... 8 ..”“.31..4 ...”“.37..68。” ” .9..5.741" “47 ......”

SOOOO,如果有人理解我的问题,我可能会需要一些帮助:d

+2

说明没有任何意义。 – 2013-07-27 19:22:18

+1

'ret [0] ='\ 0';'移到循环出来(而不是'* ret = 1;')并开始'i = 1' – BLUEPIXY

+0

这对我来说很愚蠢,非常感谢...... –

回答

0

示例代码:

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

void solve(char *data){ 
    static const char *result = "9...7....2...9..53.6..124..84...1.9.5.....8...31..4.....37..68..9..5.74147......."; 
    if(strcmp(result, data) == 0) 
     printf("working\n"); 
    else 
     printf("not working\n"); 
} 

int main(int argc, char *argv[]){ 
    int i, total_length = 0; 

    for(i = 1; i < argc; ++i){ 
     total_length += strlen(argv[i]); 
    } 

    char ret[total_length + 1]; 

    ret[0] = '\0'; 
    for(i = 1; i < argc; ++i){ 
     strcat(ret, argv[i]); 
    } 
    char test[] = "9...7...." 
        "2...9..53" 
        ".6..124.." 
        "84...1.9." 
        "5.....8.." 
        ".31..4..." 
        "..37..68." 
        ".9..5.741" 
        "47......."; 
    solve(test); 
    solve(ret); 

    return 0; 
}