我在弄清楚如何将无符号长变量(在这种情况下为电话号码)写入二进制文件时遇到了麻烦。
我有这个
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标志可以正常编译所有内容。当我运行它时,它允许我输入电话号码,但是当我输入完电话号码后按回车键时,它会显示细分错误。
我不确定从这里去哪里。
最佳答案
您的代码有多个问题。我评论了这些问题。
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;
}
A live test of your code,您可以修复这些问题并再次进行测试。
关于c - 将无符号长数据类型写入二进制文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55083357/