Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.11.2010, 05:00   #1
Nice Plant
Пользователь
 
Регистрация: 18.12.2009
Сообщений: 23
По умолчанию Работа с файлами

Задание:
Скопировать содержимое текстового файла, удалив самую длинную строку.

(Обработку символьной строки оформить в виде функции. Сканирование строки и доступк её элементам выполнить ТОЛЬКО с использованием команд адресной арифметики(работа с указателями))

ВОПРОС: В данном листинге удаляются слова, а как удалить строки?

Код:
#include <stdlib.h>
#include <stdio.h>

void deln (char *pathInput, char *pathOutput)
{
	int beg, en, max, flag1, flag2, i;
	char c=(* char)calloc(255, sizeof(char));
	FILE *finput;
	FILE *foutput;
	finput=fopen(pathInput, "rt");
	foutput=fopen(pathOutput, "wt");
	beg=0;
	en=0;
      while (!feof(finput))
      {
   		max=0;
   		flag1=0;
   		flag2=0;
   		fgets(c, 256, finput);
   		if (c[0]=='\n')
   		fputc ('\n', foutput);
  		 for (i=0;c[i]!='\0';++i)
   			{
   			 if ((c[i-1]==' ' || i==0) && c[i]!=' ')
   				beg=i;
   			 if ((c[i+1]==' ' || c[i+1]=='\0') && c[i]!=' ')
    			en=i;
    			if (en!=0)
   				 {
    				 if ((en-beg+1)>max)
      					 {
         					max=en-beg+1;
         					flag1=beg;
         					flag2=en;
   						 }
     				en=0;
     				beg=0;
   				 }
  	 }
	for (i=0;c[i]!='\0';++i)
		if (i<flag1 || i>flag2)
		fputc (c[i], foutput);
		}
}


void main(void)
{
  char *pinput;
  char *poutput;
  printf ("Input path of input file: ");
  scanf ("%s", pinput);
  printf ("Input path of output file: ");
  scanf ("%s", poutput);
  worker (pinput, poutput);
}

Последний раз редактировалось Stilet; 17.11.2010 в 08:36.
Nice Plant вне форума Ответить с цитированием
Старый 21.11.2010, 05:45   #2
Nice Plant
Пользователь
 
Регистрация: 18.12.2009
Сообщений: 23
По умолчанию

Почему не раб??

#include <stdlib.h>
#include <stdio.h>
int strlen_(char *s){
int i;
for(i=0;*s!=10&&*s;s++,i++);
return i;
}
int main(){
char *s,*sm,*t;
int l,lm,ind,indm;
FILE *fo,*fi;

s=new char[255];
sm=new char[255];

fi=fopen("in.txt","r");
fo=fopen("out.txt","w");

fgets(sm,255,fi);
lm=strlen_(sm);
ind=indm=0;

while(!feof(fi)){
fgets(s,255,fi);
l=strlen_(s);
ind++;
if(l>lm){
lm=l;
t=sm,sm=s,s=t;
indm=ind;
}
}
//puts(sm);
rewind(fi);
for(;indm;indm--){
fgets(s,255,fi);
fputs(s,fo);
}
fgets(s,255,fi);
while(!feof(fi)){
fgets(s,255,fi);
fputs(s,fo);
}

delete []s;
delete []sm;
fclose(fi);
fclose(fo);

return 0;
}
Nice Plant вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
работа с файлами Анюта01 Фриланс 8 19.03.2010 22:41
Работа с файлами в С++ xnise Помощь студентам 4 15.03.2010 21:29
Работа с файлами jimmywoodes Общие вопросы C/C++ 1 25.01.2010 00:08
Работа с файлами. Си jimmywoodes Помощь студентам 1 24.01.2010 22:03
Работа с файлами в Си shturman_ivanov Помощь студентам 0 27.12.2009 21:01