我正在尝试编写一个程序,该程序使用带有公司名称和电话号码的文件,并将其拆分为名称,区号和电话号码。我的问题是,每当我尝试运行该程序时,我都会得到错误分段错误(核心已转储)。我已经尝试过将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;
}
答案 0 :(得分:0)
该错误的原因是您没有在i
函数中初始化ReadNumber()
。
此外,您应始终检查strtok()
是否返回NULL
。