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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.08.2010, 21:22   #1
trebor
 
Регистрация: 20.06.2010
Сообщений: 7
Печаль проблема с программой, ошибку найти не могу

Суть:программа каждую строку "переваривает" таким образом, что двойные пробелы или знаки табуляции заменяются на одни. к тому же пустые строки удаляет, то есть не печатает)
#include <stdio.h>
#define MAXLINE 1000

int getline(char line[], int lim); /*получает строку*/
void probel(char to[], char from[]); /*очищает от двойных пробелов и знаков табуляции*/

main()
{
int len;
char line[MAXLINE];
char longest[MAXLINE];

while((len=getline(line, MAXLINE))>0)
if (len>3) { отсеевает пустые строки
probel(longest,line);
printf("%s",longest);
}
return 0;
}

int getline(char s[],int lim)
{
int c,i;
for(i=0;i<lim-1&&(c=getchar())!=EOF&&c!='\n';++ i)
s[i]=c;
if(c=='\n') {
s[i]=c;
++i;
}
s[i]='\0';
return i;
}
void probel(char to[],char from[])
{
int n,i,c;
n=0;
i=0;
while((c=from[i])!='\0') {
if ((c=='\t'||c==' ')&&(n<1)) {
to[i]=c;
++i;
++n;
}
else if (c!='\t'||c!=' ') {
to[i]=c;
++i;
n=0;
}
}


Заранее спасибо)
trebor вне форума Ответить с цитированием
Старый 06.08.2010, 23:48   #2
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

Вводить можно стандартными функциями scanf, (f)gets и т.п. в цикле или просто со стандартной getline. По коду - ошибка в условиях
Код:
void probel(char to[],char from[])
{
	int n=0,i=0,j=0,c;
	while((c=from[i++])!='\0')
	{
		if ((c=='\t'||c==' ')&&(n<1))
		{
			to[j++]=c;
			++n;
		}
		else if (c!='\t'&&c!=' ')
		{
			to[j++]=c;
			n=0;
		}
	}
	to[j]='\0';
}
eoln вне форума Ответить с цитированием
Старый 07.08.2010, 11:45   #3
trebor
 
Регистрация: 20.06.2010
Сообщений: 7
По умолчанию

Огромное спасибо, разобрался)Тему можно закрыть))
trebor вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема. не могу найти ошибку. delphinewerklin Помощь студентам 0 21.01.2010 17:07
Не могу найти ошибку(С++) Yura_n Помощь студентам 8 20.01.2009 12:36
Не могу найти ошибку. Picaso18 Паскаль, Turbo Pascal, PascalABC.NET 3 19.01.2009 17:05