gpt4 book ai didi

c - C 文件的问题

转载 作者:行者123 更新时间:2023-11-30 20:11:12 27 4
gpt4 key购买 nike

我的代码崩溃了,你能告诉我我做错了什么吗?如果我隔离代码的 FILE 部分,它不会崩溃

#include <stdio.h>
#include <stdlib.h>
struct student
{
char* name;
char* dorm;
};
#define NUM 3

int main()
{
struct student students[NUM];
int i=0;
for(i=0;i<NUM;i++)
{
char* naam;
char* daarm;
printf("Insert name of student #%d..\n",i+1);
scanf("%s",&naam);
students[i].name=naam;

printf("Now enter name of the dorm\n");
scanf("%s",&daarm);
students[i].dorm= daarm;

}

FILE* file=fopen("C:/Users/Gigg/Desktop/ricchio.txt","w");
if(file!=NULL)
{
int i;
for(i=0;i<NUM;i++)
{
fprintf(file,"%s,%s",students[i].name,students[i].dorm);
}

}
fclose(file);

return 0;
}

我似乎无法在任何地方找到答案,此外,编译器还告诉我 %s 期待 char* 但我给它 char

最佳答案

尝试以下操作。

问题是

  1. 需要分配内存。
  2. 您试图使用空指针关闭文件。

注意:如果文件无法打开,请添加错误消息。神奇大小的内存应该得到改善。处理冗长的用户输入。

请参阅我的“注释”。

#include <stdio.h>
#include <stdlib.h>
#include <strings.h>
#include <string.h>

struct student
{
char name[1024]; // **NOTE**: magic number
char dorm[1024]; // **NOTE**: magic number
};
#define NUM 3

int main()
{
struct student students[NUM];
int i=0;
for(i=0;i<NUM;i++)
{
char naam[1024]; // **NOTE**: magic number
bzero(naam, sizeof(naam));
char daarm[1024]; // **NOTE**: magic number
bzero(daarm, sizeof(daarm));

printf("Insert name of student #%d..\n",i+1);
scanf("%s",naam); // **NOTE**: input length
strcpy(students[i].name,naam);

printf("Now enter name of the dorm\n");
scanf("%s",daarm); // **NOTE**: input length
strcpy(students[i].dorm,daarm);
}

FILE* file=fopen("/tmp/test.txt",
"w");
if(file!=NULL)
{
int i;
for(i=0;i<NUM;i++)
{
fprintf(file,"%s,%s\n",students[i].name,students[i].dorm);
}

fclose(file); // **NOTE** should only be done if non-zero value.
} else { // NOTE: error!!!
}

return 0;
}

关于c - C 文件的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41864690/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com