Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Ада и другие языки _ в основном работа с файлами

Автор: 3 задачи на Си 26.03.2007 11:58

Всем доброго времени суток.
Поставили перед нами три задачи. Очень прошу Вас отнестись с пониманием к несвязанным с программированием специальностям и соответствующим незнанием основ. Сразу скажу, что первую задачу сделать пытался, преподаватель сказал, что вроди всё верно но углублятся в её просмотр не стал, я её скину - тем ккому легче исправить ошибки нежели тратить время на написанеи с нуля прошу её отредактировать...
Далее три этих задачи...

Цитата
Задание 1.

Написать программу cpy, копирующую файл.
В командной строке задаются два имени файла. Нужно скопировать
первый файл во второй. Предусмотреть проверку на совпадение имен исходного
и целевого файлов.


Задание 2.

Входной файл задает последовательность интервалов со
знаковыми границами.
В первой строке файла записано количество интервалов,
в остальных строках записано по два числа, разделенных пробелом,
задающих левую и правую границы интервала.
Написать программу, определяющую, содержится ли интервал [A, B]
в множестве чисел, полученном при объединении всех интервалов
последовательности.
В командной строке задано имя входного файла, число A, число В.
Печатается Yes или No.


Задание 3

Написать программу cat, читающю построчно текстовый файл и выдающую
на стандартный вывод строки задом-наперед.

Пример.
---- входной файл input.txt ----
Book 01 Genesis

001:001 In the beginning God created the heaven and the earth.

001:002 And the earth was without form, and void; and darkness was
upon the face of the deep. And the Spirit of God moved upon
the face of the waters.

001:003 And God said, Let there be light: and there was light.

001:004 And God saw the light, that it was good: and God divided the
light from the darkness.
--------------------------------

запуск: cat input.txt
------------ выдача ------------
siseneG 10 kooB

.htrae eht dna nevaeh eht detaerc doG gninnigeb eht nI 100:100

saw ssenkrad dna;diov dna ,mrof tuohtiw saw htrae eht dnA 200:100
nopu devom doG fo tiripS eht dnA .peed eht fo ecaf eht nopu
.sretaw eht fo ecaf eht

.thgil saw ereht dna :thgil eb ereht teL ,dias doG dnA 300:100

eht dedivid doG dna :doog saw ti taht ,thgil eht was doG dnA 400:100
.ssenkrad eht morf thgil
Вот первая задача...сильно не бейте...

header:
#ifndef HEADER_H
#define HEADER_H
#endif
int cpy(FILE *f1, FILE *f2);


main:
#include "stdio.h"
#include "stdlib.h"
#include "head.h"
#include <stdlib.h>
#include <string.h>

void main(int argc, char *argv[])
{
FILE *fin; FILE *out;
char *f1, *f2; int zn;
char buf[20];

if (argc < 2)
{
scanf("%s %s",buf, &f1, &f2);
zn = strcmp(f1, f2);
if (zn)
{
printf("%s", "имена совпадают");
}
else
{
fin = fopen(f1, "rb");
out = fopen(f2, "wb");
cpy(fin, out);
}
}
else
{

fin = fopen(argv[1], "rb");
out = fopen(argv[2], "wb");

cpy(fin, out);
fclose(fin);
fclose (out);
}


}


func:
#include "stdio.h"
#include "head.h"
#include <stdlib.h>
#include <string.h>
int cpy(FILE *f1, FILE *f2)
{
int a;
int *mal;
mal = (int*)malloc(sizeof(int));
a = fread(mal,1,1024,f1);
while (a)
{
fwrite(mal,1,a, f2);
a = fread(mal,1,1024,f1);
}
return 0;}


нам было сказано юзать fwrite, fread...

Нам это сегодня надо отправить преподу, пожалуйста отнеситесь максимально конструктивно к вопросу...ну оочень важно....

Автор: Гость 26.03.2007 12:09

Вот такие размышления у меня есть по поводу третьей задачи, но почему то немогу довести до ума её... посмотрите плиз

#include <stdio.h>
#include <ctype.h>
#include <stdlib.h>
#include <string.h>

int main(int argc, char *argv[])
{
FILE *stream;
char s[256],*in;
int i,l;
in=argv[1];
if( (stream = fopen( in, "r" )) != NULL )
{
while(!feof(stream))
{
if(fgets(s,256,stream)!=NULL)
{
for(i=0;i<strlen(s);i++) printf("%c",s[strlen(s)-i]);
}
}
fclose(stream);
}
return 0;
}

Автор: Гость 26.03.2007 21:39

Разобрался с 1ой и третей более или менее разобрались, т.е. первую упростили конечно, и если кто нить таки обратит внимание на неё прошу подкорректиовать, но особенно нужна 2ая