0

2 時間後、char の代わりに引数 (argv) を与えるようにプログラムを変更しようとしています。

だから、ここに私の現在のコードがあります:

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

このコードはすべての引数を char に連結します。printf は古い char 引数と同じ結果を返しますが、私のコードでは機能しません。

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......."

すっごく、誰かが私の問題を理解しているなら、おそらく助けが必要になるでしょう:D

4

1 に答える 1

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;
}
于 2013-07-28T13:45:24.890 に答える