Getline() выводит значение null при передаче указателя из внешней функции в c ⇐ Linux
-
Anonymous
Getline() выводит значение null при передаче указателя из внешней функции в c
Я пытаюсь прочитать строку из файла, когда я использую getline непосредственно в функции пакетного режима, все работает нормально, но когда я реорганизую код в отдельную функцию, это выдает ошибку.
int main(int argc, char *argv[]) { если (арг > 2) вернуть EXIT_FAILURE; пакетный_режим (argv [1]); вернуть EXIT_SUCCESS; } функция пакетного режима
void patch_mode(char *path) { символ *строка = NULL; ошибка ssize_t = 0; символ *cmd = NULL; ФАЙЛ *file = fopen(путь, "r"); если (файл == NULL) { printf("Не удалось прочитать файл\n"); возвращаться; } пока (ошибка!= -1) { read_line (строка, файл, cmd); ошибка = -1; int поток = вилка (); если (поток == 0) { char *myargs[] = {NULL}; execv (cmd, myargs); } еще { поток = ожидание (NULL); } } если (файл != NULL) fзакрыть (файл); бесплатно (линия); } строки читаются правильно в этой функции при printf, но выводят значение null в функции пакетного режима
ssize_t read_line(char *line, FILE *file, char *cmd) { size_t лен = 0; ssize_t читать = 0; read = getline(&line, &len, file); printf("%s\n", строка); если (читай == -1) { printf("Не удалось прочитать строку\n"); вернуть -1; } символ *copy = строка; cmd = strsep(©, " "); printf("%s\n", cmd); вернуть 0; } и при попытке выполнения этого кода выдает, что не может прочитать файл, поскольку он выполняется более одного раза
void patch_mode(char *path) { символ *строка = NULL; ошибка ssize_t = 0; символ *cmd = NULL; ФАЙЛ *file = fopen(путь, "r"); если (файл == NULL) { printf("Не удалось прочитать файл\n"); возвращаться; } while ((error = read_line(line, file, cmd)) != -1) { int поток = вилка (); если (поток == 0) { char *myargs[] = {NULL}; execv (cmd, myargs); } еще { поток = ожидание (NULL); } } если (файл != NULL) fзакрыть (файл); бесплатно (линия); }
Я пытаюсь прочитать строку из файла, когда я использую getline непосредственно в функции пакетного режима, все работает нормально, но когда я реорганизую код в отдельную функцию, это выдает ошибку.
int main(int argc, char *argv[]) { если (арг > 2) вернуть EXIT_FAILURE; пакетный_режим (argv [1]); вернуть EXIT_SUCCESS; } функция пакетного режима
void patch_mode(char *path) { символ *строка = NULL; ошибка ssize_t = 0; символ *cmd = NULL; ФАЙЛ *file = fopen(путь, "r"); если (файл == NULL) { printf("Не удалось прочитать файл\n"); возвращаться; } пока (ошибка!= -1) { read_line (строка, файл, cmd); ошибка = -1; int поток = вилка (); если (поток == 0) { char *myargs[] = {NULL}; execv (cmd, myargs); } еще { поток = ожидание (NULL); } } если (файл != NULL) fзакрыть (файл); бесплатно (линия); } строки читаются правильно в этой функции при printf, но выводят значение null в функции пакетного режима
ssize_t read_line(char *line, FILE *file, char *cmd) { size_t лен = 0; ssize_t читать = 0; read = getline(&line, &len, file); printf("%s\n", строка); если (читай == -1) { printf("Не удалось прочитать строку\n"); вернуть -1; } символ *copy = строка; cmd = strsep(©, " "); printf("%s\n", cmd); вернуть 0; } и при попытке выполнения этого кода выдает, что не может прочитать файл, поскольку он выполняется более одного раза
void patch_mode(char *path) { символ *строка = NULL; ошибка ssize_t = 0; символ *cmd = NULL; ФАЙЛ *file = fopen(путь, "r"); если (файл == NULL) { printf("Не удалось прочитать файл\n"); возвращаться; } while ((error = read_line(line, file, cmd)) != -1) { int поток = вилка (); если (поток == 0) { char *myargs[] = {NULL}; execv (cmd, myargs); } еще { поток = ожидание (NULL); } } если (файл != NULL) fзакрыть (файл); бесплатно (линия); }
Мобильная версия