У меня есть программа, которая принимает строки, используя подсказки командной строки argv и argc. Я продолжаю получать ошибку сегментации, когда запускаю код, и после долгих исследований я не могу определить, что может быть причиной этого. Может быть, проблема в том, как я выполняю код? Я использую gcc -o code code.c, затем ./code one two three, где one two three — строки, добавленные в связанный список. Любая помощь в определении того, где может быть моя ошибка, была бы здоровой.
Вот мой код:
#include <stdio.h>
#include <stdlib.h>
typedef struct list_node_s{
char the_char;
struct list_node_s *next_node;
}list_node;
void insert_node(list_node *the_head, char the_char);
void print_list(list_node *the_head);
int main(int argc, char *argv[]){
char next_char;
list_node *the_head = NULL;
insert_node(the_head, next_char);
the_head->next_node = malloc(sizeof(list_node));
if(the_head == NULL){
return 1;
}
the_head->the_char = 1;
the_head->next_node == NULL;
int the_count, the_count2;
for(the_count = 0; the_count < sizeof(argv); the_count++){
for(the_count2 = 0; argv[the_count][the_count2] != '\0'; the_count2++){
next_char = argv[the_count][the_count2];
insert_node(the_head, next_char);
}
}
print_list(the_head);
return (0);
}
void insert_node(list_node *the_head, char the_char){
list_node * current_node = the_head;
while (current_node->next_node != NULL) {
current_node = current_node->next_node;
}
current_node->next_node = malloc(sizeof(list_node));
current_node->next_node->the_char = the_char;
current_node->next_node->next_node = NULL;
}
void print_list(list_node *the_head){
if(the_head == NULL){
printf("\n");
}else{
printf("%c", the_head->the_char);
print_list(the_head->next_node);
}
}
the_co$
? - person Barmar   schedule 17.04.2014sizeof(argv)
почти наверняка не то, что вы хотите использовать в качестве ограниченияfor
.argv
— это указатель, его размер никак не связан с количеством аргументов. Вот для чего нуженargc
. - person Barmar   schedule 17.04.2014insert_node(the_head, next_char)
в началеmain()
,the_head
имеет значение NULL, поэтому вы получаете ошибку, когдаinsert_node
пытается его разыменовать. Иnext_char
не инициализирован. - person Barmar   schedule 17.04.2014