这是一段代码:
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) {
实际上,它会在文件中输入错误的数字。但是错误不允许继续该计划的工作。发生了什么事?我的错误在哪里?
答案 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);
如果修复上述字段说明符无法解决您的问题,那么您的代码中的其他地方还有其他问题。