#define _POSIX_C_SOURCE 200809L #include #include int replace_line(const char *file_in, const char *file_out, const char *content, int n) { FILE *a = fopen(file_out, "w"); if (a == NULL) { return -1; } FILE *r = fopen(file_in, "r"); if (r == NULL) { return -1; } char *buf = NULL; ssize_t e; int l = 0; size_t count = 0; while ((e = getline(&buf, &count, r)) != 0 && e != -1) { if (l == n) { if (fputs(content, a) == EOF) { free(buf); return -1; } } else { if (fputs(buf, a) == EOF) { free(buf); return -1; } } l++; } fclose(a); fclose(r); free(buf); return 0; }