kaiu
Высший разум
(115775)
11 лет назад
не сказано, что надо удалить в файле, так что задачу надо решить так:
1. открыть файл заданный из командной строки
2. читать весь файл посимвольно
3. выводить каждый символ на экран
4. закрыть файл.
Весь алгоритм чтения посимвольно найдешь в конспектах или в любой книге, что дал препод.
По поводу алгоритма чтоб не выводить лишние пробелы.
Вводишь переменную char oldsm = 0; которая будет хранить предыдущий символ и после считывания символа sm надо будет написать oldsm = sm;
вот так примерно:
// прочитать символ
ifs.get(sm);
// сравнить символ, что если он пробел и предыдущий тоже пробел, то его не выводить
if( !(sm == 32 && oldsm == 32) ) cout << sm;
oldsm = sm;
koma
Мыслитель
(5378)
11 лет назад
#include <stdio.h>
main(int arc, char *argv[] ){
FILE *inf;
char buff[1024], *p;
inf = fopen(argv[1]),"r");
if (!inf) {
return -1;
}
while (!fgets(buff,1023,inf)){
for (p=buff; *p; p++){
if (!(*p == ' ' && *(p+1) == ' ')) {
putch(*p);
} /*if*/
} /*for*/
} /*while*/
fclose(inf);
return 0;
} /*main*/
Юрий-17
Гений
(76478)
11 лет назад
#include <iostream>
#include <fstream>
using namespace std;
int main(int mn,char* nm[])
{
int j,k,s;
char* p;
if(mn!=2) cerr << "program.exe in.txt",exit(1);
ifstream in(nm[1],ios::binary); if(!in) cerr<<"no file \"" << nm[1] << "\"!",exit(1);
in.seekg(0,ios::end); s=in.tellg(); in.seekg(0,ios::beg);
p=new char[s+1]; in.read(p,s); in.close(); p[ s ]=0;
cout << p<< endl;
for(k=j=0;p[j];j++) if(p[j]==32&&p[j+1]==32); else p[k++]=p[j]; p[k]=0;
cout << p << endl;
delete [] p;
return 0;
}