C:我的编程错误是什么?

时间:2012-02-07 23:37:10

标签: c

这是一个包含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);

}

2 个答案:

答案 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是字符串中所需的最大字符数。