fprintf误解和未处理的例外

时间:2015-04-09 16:19:33

标签: c visual-studio visual-studio-2013

这是一段代码:

long long someNumber;
...

do{
    ...
    scanf("%d", &someNumber);
    ...
} while (...);
fprintf(someFile, "%d", someNumber);

我需要读一个包含11个字符的数字。我已经尝试了所有scanf()和fprintf()模式,如“%Ld”,“%lld”等,但结果总是不是我打印的。但它甚至不是我的问题。 当我输入ENTER时,VS给了我一个错误: “proj2.2.exe中0x54A0F365(msvcr120d.dll)的未处理异常:0xC0000005:访问冲突读取位置0x0000000A。” 它打开“output.c”并引用该行:

while ((ch = *format++) != _T('\0') && charsout >= 0) {

实际上,它会在文件中输入错误的数字。但是错误不允许继续该计划的工作。发生了什么事?我的错误在哪里?

2 个答案:

答案 0 :(得分:0)

阅读long long的格式为"%lld"。使用

scanf("%lld", &someNumber);

使用相同的格式写出来。

fprintf(someFile, "%lld", someNumber);

答案 1 :(得分:0)

the docs,类型long long的正确数据类型说明符为ll。您需要同时使用scanf()printf()

long long someNumber;

scanf("%lld", &someNumber);
printf("%lld", someNumber);

如果修复上述字段说明符无法解决您的问题,那么您的代码中的其他地方还有其他问题。