我有以下结构:
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数组大小?我对此很新,请不要苛刻。谢谢!
答案 0 :(得分:0)
struct visitordata mydata;
memset(mydata, 0, sizeof mydata);
if (scanf("%24s %24s", mydata.name, mydata.email) == 2) {
...
}
memset
填充mydata
个00
字节,以便您的文件不包含随机数据。
将数组传递给函数时,实际上只传递了指向其第一个元素的指针,这正是scanf
所期望的。请注意,要阅读int
,您必须写:
if (scanf("%d", &mydata.id) == 1) {
...
}
答案 1 :(得分:-2)
使用strlen(name)
获取名称中的字符数。