Fresh
Dec 27, 2006, 09:23
У меня такое задание по курсовой, нужно убрать лишние пробелы и комменты которые заданы ключами:
там нужно удалить все пробелы в текстовом файле, все комменты /* и //, кроме тех которые заданы специальным ключом коммандной строки.
Коммандная строка программы:
имя_программа[-p prefix] [-in file] [-list file] [-out file]
Ключ -р (если он есть) задёт префикс prefix комментария, который должен оставаться в входном файле (например, -p/*-comp означает оставить комменты, которые начинаются с /*-comp-)ж
Ключ -in (если он есть) задаёт входной файл или файлы (при использовании шаблона имён), которые идут сразу после ключа через пропуск;
Ключ -list (если он есть) задаёт текстовый файл, который идёт сразу после ключа черз пропуск, со списком спецификаций входных файлов (одна строка - одна спецификация файла);
Ключ -out (если он есть) задаёт префикс имени файла/ов результата (тоесть имени выходного файла происходит от имени входного файла лописыванием префикса);
если ключ неуказан, то префиксом по умолчанию брать символ ~.
#include <stdlib.h>
#include <stdio.h>
int main(void)
{
FILE *fp;
FILE *fopen(const char *filename, const char *mode);
int fputc(int c,FILE *fp);
char *fgets(char *str, int n,FILE *fp);
int fprintf(FILE *fp, char *fmt,...);
char ch,filename[40], mode[5];
int count;
while(1)
{
if((fp = fopen("INPUT.TXT", "a+")) != NULL)
{
fprintf(stderr,"Error opening file.");
exit(1);
}
printf("\nImmediately after opening, position = %ld", ftell(fp));
//printf("\nSuccessfull opening %s in mode %s.\n", filename, mode);
fclose(fp);
if((ch = getc(stdin))=='x')
break;
}
//fprintf(stderr, "\nError opening file %s in mode %s.\n", filename, mode);
{
int count;
system("PAUSE");
return 0;
}
Тут вот исходник кода, но он на С не работает, там одна часть написана на PHP
<?
$string="Здесь много лишних пробелов!";
$string=ereg_replace(" +"," ",$string);
echo $string;
?>
С
FILE * fIn = fopen("d:\\1.hex", "r");
int ch;
std::string s;
while (EOF != (ch = fgetc(fIn)))
{
s += (char) ch;
}
Помогите доделать программу.
Это моя курсовая
Заранее благодарен
там нужно удалить все пробелы в текстовом файле, все комменты /* и //, кроме тех которые заданы специальным ключом коммандной строки.
Коммандная строка программы:
имя_программа[-p prefix] [-in file] [-list file] [-out file]
Ключ -р (если он есть) задёт префикс prefix комментария, который должен оставаться в входном файле (например, -p/*-comp означает оставить комменты, которые начинаются с /*-comp-)ж
Ключ -in (если он есть) задаёт входной файл или файлы (при использовании шаблона имён), которые идут сразу после ключа через пропуск;
Ключ -list (если он есть) задаёт текстовый файл, который идёт сразу после ключа черз пропуск, со списком спецификаций входных файлов (одна строка - одна спецификация файла);
Ключ -out (если он есть) задаёт префикс имени файла/ов результата (тоесть имени выходного файла происходит от имени входного файла лописыванием префикса);
если ключ неуказан, то префиксом по умолчанию брать символ ~.
#include <stdlib.h>
#include <stdio.h>
int main(void)
{
FILE *fp;
FILE *fopen(const char *filename, const char *mode);
int fputc(int c,FILE *fp);
char *fgets(char *str, int n,FILE *fp);
int fprintf(FILE *fp, char *fmt,...);
char ch,filename[40], mode[5];
int count;
while(1)
{
if((fp = fopen("INPUT.TXT", "a+")) != NULL)
{
fprintf(stderr,"Error opening file.");
exit(1);
}
printf("\nImmediately after opening, position = %ld", ftell(fp));
//printf("\nSuccessfull opening %s in mode %s.\n", filename, mode);
fclose(fp);
if((ch = getc(stdin))=='x')
break;
}
//fprintf(stderr, "\nError opening file %s in mode %s.\n", filename, mode);
{
int count;
system("PAUSE");
return 0;
}
Тут вот исходник кода, но он на С не работает, там одна часть написана на PHP
<?
$string="Здесь много лишних пробелов!";
$string=ereg_replace(" +"," ",$string);
echo $string;
?>
С
FILE * fIn = fopen("d:\\1.hex", "r");
int ch;
std::string s;
while (EOF != (ch = fgetc(fIn)))
{
s += (char) ch;
}
Помогите доделать программу.
Это моя курсовая
Заранее благодарен