C 将无符号长数据类型写入二进制文件
我不知道如何将无符号长变量(本例中为电话号码)写入二进制文件 我有这个C 将无符号长数据类型写入二进制文件,c,C,我不知道如何将无符号长变量(本例中为电话号码)写入二进制文件 我有这个 int main() { char useInput[100]; unsigned long *phoneNum; FILE *fp = fopen("test.bin", "wb"); while (strncmp(useInput,"exit",4)){ printf("Phone #: "); scanf("%lu",phoneNum); fwrite(&phon
int main()
{
char useInput[100];
unsigned long *phoneNum;
FILE *fp = fopen("test.bin", "wb");
while (strncmp(useInput,"exit",4)){
printf("Phone #: ");
scanf("%lu",phoneNum);
fwrite(&phoneNum, sizeof(phoneNum), 1, fp);
printf("Fname: ");
fgets(useInput,100,stdin);
useInput[strlen(useInput)-1]='\0';
fwrite(&useInput, strlen(useInput), 1,fp);
}
fclose(fp);
return 0;
}
使用-ansi和-Wall标志,一切都可以正常编译。当我运行它时,它允许我输入电话号码,但当我在输入完电话号码后按enter键时,它会显示Segmentation fault
我不知道该从这里走到哪里。您的代码有多个问题。我评论了这些问题
int main()
{
char useInput[100];
unsigned long *phoneNum;
FILE *fp = fopen("test.bin", "wb");
while (strncmp(useInput,"exit",4)){ // useInput is not initialized for the first iteration
printf("Phone #: ");
scanf("%lu",phoneNum); // phoneNum is not initialized
fwrite(&phoneNum, sizeof(phoneNum), 1, fp);
printf("Fname: ");
fgets(useInput,100,stdin);
useInput[strlen(useInput)-1]='\0';
fwrite(&useInput, strlen(useInput), 1,fp);
} // this closing curly bracket is missing
fclose(fp);
return 0;
}
,您可以修复这些问题并再次进行测试 当您开始使用它时,
phoneNum
指向什么?既然您甚至没有编写空终止符,您将如何再次读取useInput
!此外,我不认为使用-Wall
可以很好地编译所有内容,您应该会收到大量错误。如果您不相信,请尝试-Wall-Werror
。