Я застрял, потому что не понимаю, почему мой код парсера не работает, один компилятор просто говорит об ошибке сегментации. Хотя другой компилятор компилирует его, но он просто возвращает код ошибки
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
const char *
getfield (char *line, int num)
{
const char *tok;
for (tok = strtok (line, ","); tok && *tok; tok = strtok (NULL, ",\n"))
{
if (!--num)
return tok;
}
return NULL;
}
int
main ()
{
FILE *stream = fopen ("input", "r");
FILE *fp;
char line[1024];
while (fgets (line, 1024, stream))
{
char *tmp = strdup (line);
char buf[0x100];
snprintf (buf, sizeof (buf), "c:\\temp\\%s.txt", getfield (tmp, 1));
fp = fopen (buf, "w");
int count = 0;
while ((tmp = strchr (tmp, ',')) != NULL)
{
count++;
tmp++;
}
if (count == 4 ){
fprintf (fp,
"{This is my name %s\n I'm %s years old\n my useragent is %s\n My hobbies are %s\n}",
getfield (tmp, 1), getfield (tmp, 2),
getfield (tmp, 4), getfield (tmp, 5));
}
else {
fprintf (fp,
"{This is my name %s\n I'm %s years old\n my useragent is %s%s\n My hobbies are %s\n}",
getfield (tmp, 1), getfield (tmp, 2),
getfield (tmp, 4), getfield (tmp, 5),
getfield (tmp, 6));
}
fclose (fp);
free (tmp);
}
}
У меня есть CSV-файл с тысячами строк. Пример
Name,age,gender,useragent,hobby
maximilian,16,Male,Mozilla/5.0 (compatible, MSIE 11, Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko,skateboard
Я пытаюсь создать файл для каждого имени и добавить в него другую информацию. таким образом, это вывело бы это например
maximilain.txt
This is my name maximilian
I'm 16 years old
my useragent is Mozilla/5.0 (compatible, MSIE 11, Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko
My hobbies are skateboard