Консультация № 136852
14.05.2008, 20:50
0.00 руб.
0 2 2
Здравствуйте, уважаемые эксперты! Помогите, пожалуйста, решить следующую задачу конкретно на языке программирования C. Условие задачи: "Пусть дан текстовый файл. Удалите строку с заданным номером. Если строки с указанным номером нет, сообщите об этом."

Обсуждение

Неизвестный
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;}
Неизвестный
15.05.2008, 16:38
общий
это ответ
Здравствуйте, Vesel4!
вот мое решение задачи:

#include <iostream>
#include <fstream>
#include <string>
#include <stdio.h>

using namespace std;

int main()
{
int nld = 3;
int nl=0;
string _textLine;
string temp;

ifstream file_if( "test.txt" );
if( !file_if.is_open() )
{
cout << "The file test.txt is not found! (Load)";
return -1;
}

while( getline( file_if, _textLine, ‘\n‘ ) )
{
nl++;
if(nl == nld)
{
;
}
else
{
temp = temp + _textLine + ‘\n‘;
}
}
file_if.close();
ofstream file_of( "test.txt" );
if( !file_of.is_open() )
{
cout << "The file test.txt is not found! (Save)";
return -1;
}
file_of << temp;
file_of.close();
}

Приложение:
// файл test.txt (тестовый файл)строка одинстрока двастрока тристрока четырестрока пять
Форма ответа