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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.02.2011, 23:11   #1
Mrbober
Пользователь
 
Регистрация: 18.02.2011
Сообщений: 24
Вопрос Программа по уборки мусора. Где недоработка?!

Добрый день, мне дали задание написать программу катороя убирала весь мусор в файле.dsp (ассемблер) Я её написал она работает великолепно если файлы маленькие или некоторые большие... но почему не все?!


http://mrbober.narod.ru/a94.dsp

код программы:

Код:
#include "stdafx.h"
#include <stdio.h>
#include <ctype.h>
#include <math.h>
#include <stdlib.h>
int main(int argc, char* argv[])
{
	char v[100], e[100];
	int d,r=0, p=0;
FILE *fi;
fi=fopen("c:\\w24.dsp","rt");
FILE *ccss;
ccss=fopen("c:\\ccss.txt","wt");

while(!feof(fi)) {
	fgets(v, 100, fi);
	d=0;
		while(v[d]!=0){ 
	if('\n'==v[d]){
	    d++;
		continue;}
	if(v[d]==' '){
	d++;
	continue;}
	if(v[d]=='\t'){
	d++;
	continue;}
	
	if(v[d]==';'){
		if(v[d+2]!=0){
			e[r++]=v[d++];
			e[r++]='\n';
	continue;}
		else{
	e[r++]=v[d];
	e[r++]=0;
	printf("%s\n",e);
	while(r!=0){
	fputc(e[p++],ccss); r--;}
	fputc('\n',ccss);
	p=0;
	d=d+2;
for(r=0; r<=100; r++)
{e[r]=0; // Для удобства когда смотришь пошаговый проход
v[r]=0;} // Чтобы не оставалось мусора в следующим кругу иногда всплывает!
r=0;
	continue;}}

	if(v[d]=='{'){
		while('}'!=v[d]){
			if(0==v[d+2]){
			fgets(v, 100, fi); 
			d=0;
			continue;}
			d++;}}
	if(v[d]=='}'){
		d++;
		continue;}


		e[r++]=v[d++];}
}
p=0;
while(r!=0){
fputc(e[p++],ccss); r--;}
		fclose(ccss);
		fclose(fi);
	return 0;
}

Последний раз редактировалось Stilet; 19.02.2011 в 08:59.
Mrbober вне форума Ответить с цитированием
Старый 19.02.2011, 14:30   #2
Mrbober
Пользователь
 
Регистрация: 18.02.2011
Сообщений: 24
Радость ОТВЕТ!!!

Ему буфера нахватала, слишком маленький был! Если увеличить v[100], e[100]; все работает идеально!!! Не некак нельзя сделать чтоб они были динамическими ?!

Последний раз редактировалось Mrbober; 19.02.2011 в 14:40. Причина: тупость.
Mrbober вне форума Ответить с цитированием
Старый 19.02.2011, 15:27   #3
bomik
Новичок
Джуниор
 
Регистрация: 19.02.2011
Сообщений: 3
По умолчанию

Используй векторы а не массивы.
bomik вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Недоработка! Tifa Паскаль, Turbo Pascal, PascalABC.NET 2 05.02.2011 12:52
Чистка реестра от мусора Gerzs Софт 1 21.04.2010 09:57
недоработка miclyxa Microsoft Office Excel 2 29.06.2009 04:20
Маленькая недоработка... Карась О форуме и сайтах клуба 2 09.12.2007 18:34
Программа по удалению мусора KORN Софт 12 31.10.2007 08:58