Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Помагите считать файл на СИ

18K
26 апреля 2012 года
Hardir
7 / / 20.08.2006
Имеется Borland C 3.1 (требуется именно это старье)

Код:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>

class data{
public:
long prod;
int rost;
char nazv[50];
enum tip {ohotnichya, decorativnaya, slujebnaya} tips;
};

data ms[100];

void main(){
FILE *inf;
int i,pos;
char s[200],s2[200];
char len,c;
inf=fopen("in.txt","r");
pos=0;
strcpy(s2," ");
while(!feof(inf)){
  fgets(s,200,inf);
  len=strlen(s);
  for (i=0;i<len;i++){
    c=s[i];
    if (c!=';') {sprintf(s2,"%s%s",s2,c);}
      else {
      switch (pos){
    case 0: ms[1].prod=atol(s2);
    //exit(1);
    }
      }
    }

  }
fclose(inf);

}
И есть файл in.txt:
Цитата:

25;20;Karlikavi binch;ohotnichya
22;20;pitbul;decorativnaya
30;29;Namackaya ovcharka;slujebnaya
21;15;buldog;decorativnaya



Необходимо считать файл в массив ms типа data таким образом, чтобы каждая строка файла была новой ячейкой массива,
а все поля раскидать по переменным. Например, первая строка файла:
25;20;Karlikavi binch;ohotnichya
Число 25 должно лечь в переменную ms[0].prod;
20 в ms[0].rost;
Karlikavi binch в ms[0].nazv;
ohotnichya в ms[0].tips;

Глюки происходят на строке конкатенации. Т.е. sprintf(s2,"%s%s",s2,c); должно соединить строку s2 со строкой c, но вместо этого в s2 какая-то каша.
Может есть другой вариант сделать эту задачу?
Помогите! На СИ программлю впервые...

247
27 апреля 2012 года
wanja
1.2K / / 03.02.2003
Функция strcat.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог