我修好了它!
typedef struct student
{
char id[11];
}Student;
#include<stdio.h>
#include<stdlib.h>
int main(int argc, char **argv){
int input = 0, i = 0;
FILE * fp = fopen("student.txt", "wt");
if (fp == NULL) {
printf("Error to open student.txt");
return -1;
}
scanf("%d",&input);
student = (Student *)malloc(input*sizeof(Student));
for(i=0;i<input;i++){
strcpy(student[i].id, "a"); // A is just for default.
fprintf(fp,"%s\n",student[i].id);
}
fclose(fp);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我已经修改了评论和善意的答案.它确实有效
感谢帮助
我真的很感激!这真的很有用.
几个笔记:
附:
for (i=0; i<input; i++)
student = ...
Run Code Online (Sandbox Code Playgroud)
你反复压倒的价值student.
这非常像:
x = 5;
x = 6;
x = 7;
...
Run Code Online (Sandbox Code Playgroud)
不仅如此,在此过程中,您还会对自己造成大量内存泄漏.
有了student = malloc(...),你在每个迭代分配一个新的内存块,然后将此变量设置为指向该内存块,而"忘记"前一个(你将不再能够解除分配).