Добрый день.
Подскажите пожалуйста, стоит задача читать из файла некоторое количество символов (сейчас я читаю 10 символов).
Файл такого вида
-2.91,7.88,2.40,inf,2013-01-14T12:07:48.855,15,0,050f1f00
00,1
-2.97,7.75,2.40,inf,2013-01-14T12:07:49.104,16,0,05101f00
00,1
-2.95,7.82,2.40,inf,2013-01-14T12:07:49.338,17,0,05111f00
00,1
-2.99,7.70,2.40,inf,2013-01-14T12:07:49.588,18,0,05121f00
00,1
-3.06,7.60,2.40,inf,2013-01-14T12:07:49.837,19,0,05131f00
00,1
-3.00,7.71,2.40,inf,2013-01-14T12:07:50.056,20,0,05141f00
00,1
-2.94,7.74,2.40,inf,2013-01-14T12:07:50.305,21,0,05151f00
00,1
-2.90,7.84,2.40,inf,2013-01-14T12:07:50.555,22,0,05161f00
00,1
-2.93,7.78,2.40,inf,2013-01-14T12:07:50.805,23,0,05171f00
00,1
-2.96,7.70,2.40,inf,2013-01-14T12:07:51.054,24,0,05181f00
00,1
-2.91,7.79,2.40,inf,2013-01-14T12:07:51.304,25,0,05191f00
00,1
-2.96,7.69,2.40,inf,2013-01-14T12:07:51.522,26,0,051a1f00
00,1
-3.00,7.61,2.40,inf,2013-01-14T12:07:51.772,27,0,051b1f00
00,1
-3.02,7.57,2.40,inf,2013-01-14T12:07:52.021,28,0,051c1f00
00,1
-3.04,7.53,2.40,inf,2013-01-14T12:07:52.271,29,0,051d1f00
00,1
-3.06,7.50,2.40,inf,2013-01-14T12:07:52.521,30,0,051e1f00
00,1
-3.08,7.47,2.40,inf,2013-01-14T12:07:52.770,31,0,051f1f00
00,1
-3.08,7.47,2.40,inf,2013-01-14T12:07:53.020,32,0,05201f00
00,1
-3.09,7.48,2.40,inf,2013-01-14T12:07:53.269,33,0,05211f00
00,1
-3.07,7.50,2.40,inf,2013-01-14T12:07:53.503,34,0,05221f00
00,1
-3.06,7.51,2.40,inf,2013-01-14T12:07:53.753,35,0,05231f00
00,1
-3.06,7.55,2.40,inf,2013-01-14T12:07:54.003,36,0,05241f00
00,1
-3.07,7.54,2.40,inf,2013-01-14T12:07:54.252,37,0,05251f00
00,1
-3.08,7.51,2.40,inf,2013-01-14T12:07:54.424,38,0,05261f00
00,1
-3.09,7.49,2.40,inf,2013-01-14T12:07:54.673,39,0,05271f00
00,1
-3.09,7.49,2.40,inf,2013-01-14T12:07:54.923,40,0,05281f00
00,1
-3.02,7.58,2.40,inf,2013-01-14T12:07:55.173,41,0,05291f00
00,1
inf,inf,inf,inf,2013-01-14T12:07:55.422,42,0,052a1f0000,1
-3.03,7.56,2.40,inf,2013-01-14T12:07:55.687,43,0,052b1f00
00,1
-2.90,7.74,2.40,inf,2013-01-14T12:07:55.921,44,0,052c1f00
00,1
-2.97,7.67,2.40,inf,2013-01-14T12:07:56.124,45,0,052d1f00
00,1
-2.84,7.93,2.40,inf,2013-01-14T12:07:56.374,46,0,052e1f00
00,1
-2.92,7.85,2.40,inf,2013-01-14T12:07:56.623,47,0,052f1f00
00,1
-2.94,7.81,2.40,inf,2013-01-14T12:07:56.873,48,0,05301f00
00,1
-2.97,7.81,2.40,inf,2013-01-14T12:07:57.091,49,0,05311f00
00,1
-2.96,7.80,2.40,inf,2013-01-14T12:07:57.341,50,0,05321f00
00,1
inf,inf,inf,inf,2013-01-14T12:07:57.591,51,0,05331f0000,1
-2.92,7.80,2.40,inf,2013-01-14T12:07:57.840,52,0,05341f00
00,1
inf,inf,inf,inf,2013-01-14T12:07:58.089,53,0,05351f0000,1
-2.91,7.90,2.40,inf,2013-01-14T12:
Сильно не пинайте за такой код, неопытный я. Как правильно написать условия, чтобы в конце строки и при пустой строчке в буфер записывалась новая строчка и не съедался первый знак? С помощью переменной "a" я хотел делать возврат вроде
in->_ptr=in->_ptr-a
И поставить условие, чтобы при достижении конца строки или если идёт несколько нулей строка считывалась до конца, переходила на новую и записывалась нужная строчка.
Заранее спасибо за помощь.
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
FILE *in, *out;
char buf[10];
char tmp;
char end = '\n';
int a;
// int i;
// i = 0;
if ((in = fopen("D:\\test\\log.txt","r"))==NULL)
{
printf("Ошибка чтения файла.\n");
exit(1);
}
if((out = fopen("D:\\test\\1.txt","w+"))==NULL)
{
printf("Ошибка создания файла.\n");
exit(1);
}
while(!feof(in))
{
a = 0;
fread(&buf,sizeof(buf),1,in);
while(tmp !='\n' && !feof(in)){
tmp = getc(in);
}
printf("Конец строки \n");
if ((tmp = getc(in)) == '\n')
{
a++;
}
if (a > 2)
{
printf("Неверная строка в буфере");
}
else
{
fwrite(&buf,sizeof(buf),1,out);
fwrite(&end,sizeof(char),1,out);
}
}
printf("%s",buf);
fclose(in);
fclose(out);
return 0;
}