Помагите считать файл на СИ
Код:
#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);
}
#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);
}
Цитата:
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 какая-то каша.
Может есть другой вариант сделать эту задачу?
Помогите! На СИ программлю впервые...
Функция strcat.