Консультация № 180655
09.11.2010, 20:32
58.52 руб.
0 2 1
здравствуйте
я написала программу на языке си, в которой из входного файла в выходной копируется часть строки, ограниченная N символами. эту программу требуется дополнить условием: если во входном файле есть четвёрка, то копировать всё содержимое входного файла в выходной. если четвёрки нет, то копируется по-прежнему часть строки, ограниченная N символами

Код:

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

#define N 5

void main(void)
{
char* c;
c=(char*)malloc(sizeof(char));
char* string;
string=(char*)malloc(sizeof(char)*(N+1));
char *wfileinput = (char*)calloc(20, sizeof(char));
char *wfileoutput = (char*)calloc(20, sizeof(char));
FILE *fileinput;
FILE *fileoutput;

printf("put' vh. faila ");
scanf("%s", wfileinput);
printf("put' rez. faila ");
scanf("%s", wfileoutput);
fileinput = fopen(wfileinput, "rt");
if(fileinput==NULL)
{
printf("File is not found!\n");
exit(0);
}
fileoutput = fopen(wfileoutput, "wt");
if(fileoutput==NULL)
{
printf("File is not found!\n");
exit(0);
}
while(*c != EOF)
{
fgets(string, N + 1, fileinput);
fputs(string, fileoutput);
fputc('\n', fileoutput);
while (*c != '\n' && *c != EOF)
*c = fgetc(fileinput);
if (*c != EOF)
*c = ' ';
}
free(wfileinput);
free(wfileoutput);
free(c);
free(string);
}

Обсуждение

давно
Мастер-Эксперт
325460
1469
09.11.2010, 21:16
общий
// определение длины файла
fseek(fileinput,0,SEEK_END);
len=ftell(fileinput);
fseek(fileinput,0,SEEK_SET);

lennotfull=getc(fileinput);
fseek(fileinput,0,SEEK_SET);

while(*ccc != EOF)
{
if (lennotfull==4)
{
fgets(string, N + 1, fileinput);
fputs(string, fileoutput);
}
else
{
fgets(string, len+1, fileinput);
fputs(string, fileoutput);
}
fputc('\n', fileoutput);
while (*ccc != '\n' && *ccc != EOF)
*ccc = fgetc(fileinput);
if (*ccc != EOF)
*ccc = ' ';
}

fclose(fileinput);
fclose(fileoutput);
free(wfileinput);
free(wfileoutput);
free(ccc);
free(string);



к примеру так переделать
чтобы работало корректно надо немного отладить.
Об авторе:
to live is to die
давно
Профессор
230118
3054
09.11.2010, 22:05
общий
это ответ
Здравствуйте, Татьяна Львова!
Код:

while(*c != EOF)
{
*c = fgetc(fileinput);
if (*c == '4')
{
break;
}
fseek(fileinput,0,SEEK_SET);
if(*c == '4')
{
// определение длины файла
fseek(fileinput,0,SEEK_END);
len=ftell(fileinput);
fseek(fileinput,0,SEEK_SET);
fgets(string, len+1, fileinput);
fputs(string, fileoutput);
}
else
{
Ваш предыдущий код
}
5
Форма ответа