15.05.2008, 04:16
общий
это ответ
Здравствуйте, Vesel4!
Аналогичный вопрос №<a href=http://rusfaq.ru/info/Question/131720>131720</a> вы уже задавали. Ответ удовлетворяет вашим требованиям (язык С). Код повторно привожу в приложении.
Приложение:
include <stdio.h>#include <stdlib.h>#include <string.h>#define BUFFER_SIZE 128int main(int argc, char* argv[]) { const char *file_name = "1.txt"; FILE *in = fopen("1.txt", "r"); if(!in) { printf("Error opening file %s\n", file_name); return 0; } int lines_count = 0; char buffer[BUFFER_SIZE]; printf("File %s:\n\n", file_name); while(fgets(buffer, BUFFER_SIZE, in) != NULL) { printf("%d. %s", lines_count+1, buffer); lines_count++; } printf("\n\nLines count: %d\n", lines_count); int line_number; printf("Input number of deleted line: "); scanf("%d", &line_number); line_number--; if(line_number >= lines_count || line_number <= 1) { printf("In file %s no line with number %d\n", file_name, line_number+1); fclose(in); return 0; } rewind(in); char **lines = (char **)malloc((lines_count - 1)*sizeof(char *)); char **ptr = lines; int i = 0; for(; i<lines_count; i++) { fgets(buffer, BUFFER_SIZE, in); if(i == line_number) continue; *lines = (char *)malloc((strlen(buffer) + 1)*sizeof(char)); strcpy(*(lines++), buffer); } lines = ptr; fclose(in); in = fopen(file_name, "w"); if(!in) { printf("Error opening file %s\n", file_name); return 0; } printf("File %s without line: %d\n\n", file_name, line_number+1); for(i=0; i<lines_count-1; i++) { fputs(lines[i], in); printf("%d. %s", i+1, lines[i]); free(lines[i]); } free(lines); printf("\n"); return 0;}