分割文件时出现分段错误(核心已转储)

时间:2020-04-29 00:53:01

标签: c

我正在尝试编写一个程序,该程序使用带有公司名称和电话号码的文件,并将其拆分为名称,区号和电话号码。我的问题是,每当我尝试运行该程序时,我都会得到错误分段错误(核心已转储)。我已经尝试过将malloc与我的指针一起使用,但是似乎没有用。

# include <stdio.h>
# include <stdlib.h>
# include <string.h>
typedef struct {
    char name[30];
    char areacode[10];
    char phone[14];
} phone_numbers;

int ReadNumber(phone_numbers *phone) {

    FILE *input = fopen("phone_numbers.txt", "r");

    char length[200];
    char *temp;
    int i;

    if (input == NULL) {

         printf("File can not open");
    }
    while (fgets(length, sizeof(length), input) != NULL) {
        temp = strtok(length, " ");
        strcpy(phone[i].name, temp);

        temp = strtok(NULL, "-");
        strcpy(phone[i].areacode, temp);

        temp = strtok(NULL, "\n");
        strcpy(phone[i].phone, temp);

        i++;
    }
    fclose(input);
    return i;
}



void PrintNumbers (phone_numbers *phone, int i) {
    int j;

    for(j=0; j <= i; j++) {

        printf("Business: %s Area code: %s Phone: %s \n", phone[i].name, phone[i].areacode, phone[i].phone);
    }
    return;
}

int main() {

    phone_numbers phone[10];
    int i;

    i = ReadNumber(phone);

    PrintNumbers(phone, i);


    return 0;
}

1 个答案:

答案 0 :(得分:0)

该错误的原因是您没有在i函数中初始化ReadNumber()

此外,您应始终检查strtok()是否返回NULL