注册 登录
编程论坛 C语言论坛

关于文件读取显示时,编译正常,程序却半路停止运行的问题

无涯汪洋 发布于 2020-03-01 07:06, 1503 次点击
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct career
{
    char c_num[20];
    char c_nam[20];
    char c_car[20];
   
};
void app(void)
{
    FILE *fp;
    struct career *p;
    if((fp=fopen("car.text","r"))==NULL)
    {
        printf("打开失败!\n");
        exit(1);
    }
    while(!feof(fp))
    {
    fscanf(fp,"%s\n",p->c_num);
    fscanf(fp,"%s\n",p->c_nam);
    fscanf(fp,"%s\n",p->c_car);
    printf("%s\n%s\n%s\n",p->c_num,p->c_nam,p->c_car);
    }
    fclose(fp);
}

 int main(void)
 {
     app();
 
     return 0;
 }
如何解决???
3 回复
#2
吹水佬2020-03-01 07:29
struct career *p; 之后p没有指明目的地

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct career
{
    char c_num[20];
    char c_nam[20];
    char c_car[20];

};
void app(void)
{
    FILE *fp;
    if((fp=fopen("car.text","r"))==NULL)
    {
        printf("打开失败!\n");
        exit(1);
    }
    struct career ca;
    while(fscanf(fp,"%s%s%s",ca.c_num,ca.c_nam,ca.c_car)==3)
        printf("%s %s %s\n",ca.c_num,ca.c_nam,ca.c_car);
    //用指针
    //struct career *p=&ca;
    //while(fscanf(fp,"%s%s%s",p->c_num,p->c_nam,p->c_car)==3)
    //    printf("%s %s %s\n",p->c_num,p->c_nam,p->c_car);
    fclose(fp);
}

int main(void)
{
    FILE *fp;
    if((fp=fopen("car.text","w"))==NULL)
    {
        printf("建测试文件失败!\n");
        exit(1);
    }
    fprintf(fp, "%s %s %s\n", "c_num1", "c_nam1", "c_car1");
    fprintf(fp, "%s %s %s\n", "c_num2", "c_nam2", "c_car2");
    fprintf(fp, "%s %s %s\n", "c_num3", "c_nam3", "c_car3");
    fclose(fp);

    app();
    return 0;
}

[此贴子已经被作者于2020-3-1 07:45编辑过]

#3
无涯汪洋2020-03-01 18:31
感谢,已解决!
#4
hbccc2020-03-01 22:49
学习了
1