Проблемы с argv и 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


person John Konolol    schedule 27.07.2013    source источник
comment
В описании нет никакого смысла.   -  person    schedule 27.07.2013
comment
ret[0] = '\0'; перейти к выходу из цикла (вместо *ret = 1;) и начать i = 1   -  person BLUEPIXY    schedule 27.07.2013
comment
Это было глупо с моей стороны, большое спасибо ...   -  person John Konolol    schedule 27.07.2013
comment
@BLUEPIXY вместо этого отправьте ответ.   -  person Grijesh Chauhan    schedule 27.07.2013
comment
Хотите уточнить? На основе вашего кода он вообще что-нибудь распечатывает, чтобы пользователь мог видеть? Но вы говорите, что ваш код не работает, но я не думаю, что вы должны ставить * на ret, когда вы его инициализируете, и, кроме того, вы объявили его как символ (char), и все же вы присвоить ему целое число (1). Вам нужно изменить его на переменную int и удалить звездочку, тогда это может сработать   -  person    schedule 27.07.2013
comment
Да, я вставил не тот фрагмент, мой плохой. Кроме того, bluepix ответил на мой вопрос, но опубликовал его как комментарий, я не могу подтвердить ответ :(   -  person John Konolol    schedule 28.07.2013


Ответы (1)


образец кода:

#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;
}
person BLUEPIXY    schedule 28.07.2013