我有一个这样的文本文件:
123-55555-1 10000 0
123-55533-3 12300 500
123-99971-3 50000 0
123-38951-2 350 10
120-39888-0 4910 100
121-12345-3 50000 150
121-xptoz-3 1000 100
150-23857-1 350000 20000
521-71750-4 500000 25000
191-11999-7 1200
我想要的是能够使用fgets()
. 当我阅读它时,我想调用另一个函数,该函数使用 read 行处理信息并将其放在列表中。问题是当我尝试调用函数并将字符串作为参数传递时,它给了我 seg error:11。这是我的代码。
typedef struct identificador_s
{
int a;
int b;
int c;
} identificador;
typedef struct contaBancaria_s
{
identificador id;
int saldo;
unsigned short int credito;
struct contaBancaria_s * proximo;
} contaBancaria;
contaBancaria * contaP = NULL;
char contas[] = "contas.txt";
char movimentos[] = "movimentos.txt";
char divideString(char line[], int contagem, char parametro[])
{
int i = 0;
char *a = NULL;
char string1;
a = strtok(line, parametro);
while (i != contagem)
{
a = strtok(NULL, parametro);
i++;
}
string1 = (char) *a;
return string1;
}
void contaFill(char line[])
{
printf("passo -2");
contaBancaria * p = malloc(sizeof(contaBancaria));
printf("passo 0");
int i = 0;
char parametro1[] = "-";
char parametro2[] = " ";
p->id.a = (int) divideString(line, i, parametro1);
printf("passo 1");
p->id.b = (int) divideString(line, i += 1, parametro1);
printf("passo2");
p->id.c = (int) divideString(line, i += 1, parametro1);
printf("passo 3");
/*if(!(validaIdentificador(p-id.a,p->id.b,p-id.c))){
return;
}*/
p->saldo = (int) divideString(line, i += 1, parametro2);
printf("passo 4");
p->credito = (int) divideString(line, i += 1, parametro2);
printf("passo 5");
printf("%d - %d - %d %d %d", p->id.a, p->id.b, p->id.c, p->saldo, p->credito);
}
void loadFile(char fileType[])
{
FILE * fp;
fp = fopen(fileType, "r");
int size = 100;
char buffer[100];
char string1[100];
if (fp)
{
while (fgets(buffer, 100, fp) != NULL)
{
puts(buffer);
if (strcmp(fileType, "contas.txt") == 0)
{
contaFill(buffer);
}
}
fclose(fp);
}
}
int main(int argc, char* argv[])
{
loadFile(contas);
return 0;
}