C. Могу ли я выразить char *argv[](аргументы командной строки) в виде массива символов для структурной переменной?

У меня есть структура, которой я присваиваю значение из байтов, считываемых из mp3-файла.

struct foo{
char name[30];  //name I want 
}

Что я хочу сделать, так это изменить переменные структуры из ввода через аргументы командной строки. Вот как я изначально установил переменные структуры:

int main(int argc, char *argv[]){
struct foo bar;
char *temp = argv[1];

fread(bar.name,1,30,file);//reading bytes from file and setting initial value


}

Вот как я пытался изменить их двумя способами:

bar.name = temp;//   error: incompatible assigning (char[10] from char*)
strcpy(bar.name,temp);//  error: incompatible implicit declaration

Вот что я ввожу в командную строку: ./test new_title

Как я должен представлять argv как char[], а не как char? Я бы использовал get_opt, но нас попросили этого не делать.


person Devin_Kinh    schedule 03.02.2015    source источник
comment
Чтобы использовать strcpy, включите <string.h>.   -  person    schedule 03.02.2015
comment
вау.я чувствую себя идиотом.спасибо! @ремябель   -  person Devin_Kinh    schedule 03.02.2015


Ответы (1)


относительно этого вопроса:

Как я должен представлять argv как char[], а не как char? Я бы использовал get_opt, но нас попросили этого не делать.

argv[] на самом деле является char**, поэтому это не какой-либо массив char.
Скорее это массив указателей на char.

Таким образом, argv нельзя рассматривать как массив символов.

массив символов будет выглядеть примерно так:

char myArray[10].

массив массивов символов будет выглядеть примерно так:

char myArray[10][20]

ни один из них не соответствует этому: (что похоже на то, как выглядит argv)

char **myArray[10]
for i=0;i<9;i++
{
    myArray[i] = malloc( 20 );
}

myArray[9] = NULL;
person user3629249    schedule 03.02.2015