我在弄清楚如何将无符号的长变量(在这种情况下为电话号码)写入二进制文件时遇到麻烦。
我有这个
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键时,它会显示细分错误。
我不确定从这里去哪里。
答案 0 :(得分:0)
您的代码有多个问题。我评论了这些问题。
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,您可以修复这些问题并再次进行测试。