Не могу нормально отладить программу! Debug версия программы почему-то вылетает с сообщением:
Debug assertion Failed
Program: filemodify
File: isctype.c
Line: 56
Expression: (unsigned)(c+1)<=256
Вообще то я макросов assert никуда не вставлял. Программа берет csv файл со списком телефонов, удаляет из него лишние символы (';'), и записывает полученный список телефонов в удобочитаемом виде в текстовый файл.
#include<iostream>
#include<fstream>
#include<string>
#include<iomanip>
using namespace std;
void zamchars(string& str2ed, char ch2del) //Заменяем символы ch2del на пробелы
	{
	for(int i=1; i<str2ed.length(); i++) {
		if(str2ed[i]==ch2del) str2ed[i]=' ';
	};
	}
void delspace(string& str2ed)				//Удаление двойных пробелов
	{
	for(int i=1; i<str2ed.length(); i++) {
		if(isspace(str2ed[i]) && isspace(str2ed[i-1])) {
			//cout<<"In string "<<str2ed<<endl;
			//cout<<"Found double space in pos "<<i<<endl;
			str2ed=str2ed.erase(i-1, 1);
			i--;
			//cout<<"Double space erased! New string:"<<str2ed<<endl;
			//char sel;
			//cin>>sel;
			};
	};
	}
void getnewline(ifstream& infile, ofstream& outfile, int lencell)	
	{
string newstr, orgname, telnum, nextstr;
do {
	getline(infile, newstr);
	char next;
	infile.get(next);			//Проверим, не остался ли конец этой
	while(!isalpha(next))		// строки на следующих строках критерий - число
		{						//или знак препинания. 
		infile.putback(next);
		getline(infile, nextstr);
		infile.get(next);
		newstr=newstr+nextstr;
		};
	infile.putback(next);
	zamchars(newstr, ';');
	delspace(newstr);			//убираем лишние знаки и пробелы
	int i=0;
	while(!isdigit(newstr[i]) && (newstr[i]!='+')) i++;
	newstr.insert(i, "\n");		//Добавляем перевод строки перед номером телефона
	outfile<<setw(82)<<newstr<<endl;
	for(i=0; i<82; i++) outfile<<"-";
	outfile<<endl;				//Вывод в файл с разделением записей
	} while(!infile.eof());
	}
/*void getfileline(ifstream& infile, ofstream& outfile, int lencell) {
	string orgname, telnum, nextstr;
	do {
	getline(infile, orgname, ';');
	int len=orgname.length();
	int koeff=len/lencell;
	if((len%lencell)==0) koeff--;
	int i=1;
	while(koeff>0) { orgname.insert(lencell*i,1, '\n');
	i++;
	koeff--;
	};
	while((orgname.length()%lencell)!=0) {
		orgname.insert(orgname.length(),1,' ');
		};
	char next;
	do { infile.get(next); } while(next==';');
	if(next!=';') infile.putback(next);
	//while(next!='\n') {
		//infile.putback(next);
		getline(infile, telnum);
		infile.get(next);
		while(next==';') {
			getline(infile, nextstr);
			telnum=telnum+nextstr;
			infile.get(next);
			};
			infile.putback(next);
		for(int i=0; i<telnum.length(); i++) {
			if(telnum[i]==';') telnum[i]=' ';
		}
		//delchars(telnum, ' ');
		delspace(telnum);
		//do{infile.get(next); } while(next==';');
		//outfile.seekp(lencell+4);
		if(isdigit(telnum[1])) {
		outfile<<setw(82)<<orgname<<endl;
		outfile<<"		"<<setw(telnum.length()+2)
			<<setiosflags(ios::left)<<telnum<<endl;
		for(i=0; i<82; i++) outfile<<"-";
		outfile<<endl;
			};
		//infile.get(next);
		} while(!infile.eof());
	outfile<<endl;
}*/
int main() {
	/*if(argc!=3) {cout<<"Use program: filemodify infile outfile"<<endl;
	exit(1);
	}*/
	string firstfile; 
	string secfile;
	cout<<"Enter input file name >";
	cin>>firstfile;
	cout<<endl<<"Enter output file name >";
	cin>>secfile;
	cout<<endl;
	ifstream fin;
	ofstream fout;
	fin.open(firstfile.c_str());
	if(fin.fail()) { cout<<"Error open "<<firstfile<<endl;
	char sel;
	cin>>sel;
	exit(1);
	}
	fout.open(secfile.c_str());
	if(fout.fail()) { cout<<"Error open "<<secfile<<endl;
	exit(1);
	}
int cell_length;
cout<<"Enter a length of Company name  cell >";
cin>>cell_length;
cout<<endl;
//getfileline(fin, fout, cell_length);
getnewline(fin, fout, 82);
fin.close();
fout.close();
return 0;
}
Частично приведу файл, на котором вылетаем:
Radisson SAS Slavyanskaya Hotel;80959418118;80959418668;;;;;;;
;;9518138;;;;;;;
METRO Cash&Carry OOO;80955021052;80955021096;;;;;;;
Бритиш Бродкастинг Корпорейшн;80957752957;;;;;;;;
ЮГНПЦ Прогресс;593386;8103800482593348;;;;;;;
;;;;;;;;;89161248772
МГУП Промотходы;;;;;;;80956810892;;
МГУП Промотходы;;80952380572;;80957604014;;;80954350954;;80957680586
ООО «МКФ ЭНЕРГО»;80957252426;89164484431;;;;;;;80951399815
Экоцентр;;;;;;;3531510;;
Пробирная палата России Центральная госинспекция;;80952097261;;;;;5903473;;89169606004
МГУП Промотходы;;9591618;;;;;;;89167071916
ООО «МКФ ЭНЕРГО»;;80957252426;;;;;;;89161463271
Коммерческий банк «Альта-банк» (ЗАО);;80952731357;;;;;;;
МГУП Промотходы;;80952386685;;;;;;;
ООО Филипс;80959330338;80959330339;;;;;;;1064856
МГУП Промотходы;;80959591713;;;;;;;
Московская Межбанковская Валютная Биржа;7059622;7059672;;;;;;;89161648785
ОАО МТС;7660180;9112190 доб 17561;;;;;;;89165181757
МГУП Промотходы;;80952562003;;;;;;;89161857744
Debug версия программы вылетает после вывода в новый файл строчки с:
ОАО МТС;7660180;9112190 доб 17561;;;;;;;89165181757
При этом Realise версия работает, но, к сожалению, кое-где не полностью удаляет лишние символы. Почему-понять не могу, так как отладка не успевает дойти до этого места. Помогите - ооочень нужна программка.