DL
Djanuska Lapuska

Ошибка в программе на C.

Помогите пожалуйста найти ошибку в программе которая должна пронумеровывать каждую строку файла, сама программа:
#include

#define MAXL_STR 1000

short eof_check( FILE * file ) /* Проверяет конец файла */
{
signed char c;
fpos_t posInFile;

fgetpos( file, &posInFile );
c = getc( file );
fsetpos( file, &posInFile );
return ( c == EOF ) ? 0 : 1;
}

short str_num( FILE * fp )
{
int i;
fpos_t pos_p;
char * arrs;
arrs = ( char * ) calloc( MAXL_STR, sizeof( char ) );
i = 0;
rewind( fp );
while ( eof_check( fp ) )
{
fgetpos( fp, &pos_p );
fgets( arrs, MAXL_STR, fp );
printf( "%d%s", i, arrs );
fsetpos( fp, &pos_p );
if ( arrs[0] == ' ' || arrs[0] == '\t' )
fprintf( fp, "%d%s", i, arrs );
else
fprintf( fp, "%d %s", i, arrs );
free( arrs );
arrs = ( char * ) calloc( MAXL_STR, sizeof( char ) );
++i;
}
}

int main( void )
{
FILE * fpath;
fpath = fopen( "search_str.c", "r+" );
str_num( fpath );
return 0;
}
В программе есть одна неувязочка: она стирает несколько начальных символов у всех строк кроме последней. Помогите пожалуйста.

Ошибка в str_num.

Ви
Виктория

Или считывай все в память, или создавай новый файл и записывай туда. Иначе будет перезапись.
А вообще тут бреда столько, что только за голову хвататься.. .
Есть стандартная функция feof, а твоя функция eof_check работает криво, потому что getc возвращает не char, а int - специально для того, чтобы в конце файла вернуть -1 (т. е. EOF). Ты же это значение убиваешь, приводя к 255. И это только одна мелочь.

Похожие вопросы
Какая ошибка в коде c++?
Ошибка при открытие программы выдает visual C++
Программа в C или C++
Помогите найти ошибку в программе решающей СЛАУ, C++
Ошибки при выполнении программы в C++.
C++Builder.Подскажите что за ошибки
Помагите исправить ошибку в программе C++
Помогите исправить ошибку в программе (C++).
Подскажите, как исправить ошибки в программе C++ 6 builder?
Найдите ошибку в программе C++