C - 将char数组写入文件

时间:2016-11-03 22:55:41

标签: c file

我有以下结构:

struct visitordata {
    char name[25];
    char email[25];
    int id;
    char reg_time[9];
};

我想将这些访问者的数据写入文件。我正在从CLI中读取这些数据:

int main(int argc, char** argv)
{
    struct visitordata mydata;
    char name[25], email[25], eventid[10], c;
    printf("Enter name: ");
    scanf("%s", name);
    strcpy(mydata.name, name);
    //etc.
}

现在当我尝试写入文件时:

lseek(handle, -sizeof(mydata.name), SEEK_END);
fputs(handle, &mydata.name);  

由于我分配了char name[25]

,因此写入了用户输入的输入,但也有些胡言乱语。

如何在从命令行读取后分配char数组大小?我对此很新,请不要苛刻。谢谢!

2 个答案:

答案 0 :(得分:0)

struct visitordata mydata;

memset(mydata, 0, sizeof mydata);

if (scanf("%24s %24s", mydata.name, mydata.email) == 2) {
    ...
}

memset填充mydata00字节,以便您的文件不包含随机数据。

将数组传递给函数时,实际上只传递了指向其第一个元素的指针,这正是scanf所期望的。请注意,要阅读int,您必须写:

if (scanf("%d", &mydata.id) == 1) {
    ...
}

答案 1 :(得分:-2)

使用strlen(name)获取名称中的字符数。