这是一个包含C语言的简单程序。
输入人名和文件ID。
但是工作不正常,并乐于帮助代码。
我的函数malloc还可以吗?
#include <stdio.h>
#include <stdlib.h>
void person();
void main(){
person();
}
void person(){
FILE *file;
char *str;
int i,id;
file=fopen("personid.txt","w");
if(!file)
{
puts("Error");
exit(1);
}
str=(char*)malloc(sizeof(char*));
for(i=0; i<5; i++)
{
puts("Enter name:");
gets(str);
puts("Enter you ID:");
scanf("%d",&id);
fprintf(file,"%s - %9d\n",str,id);
}
free(str);
fclose(file);
}
答案 0 :(得分:2)
您的内存分配错误,应该是这样的:
str=(char*)malloc(sizeof(char)*count_of_chars);
请务必为count_of_chars
设置一个值。
答案 1 :(得分:2)
两个问题。首先,您需要在主要功能之上声明person
功能。所以:
void person();
void main() {
...
}
void person() {
...
}
应该可以正常工作。其次,你使用malloc的方式,你只会获得一个char *
内存。你需要这样做:
str=(char*)malloc(sizeof(char)*stringLength);
其中stringLength
是字符串中所需的最大字符数。