【发布时间】:2019-01-22 21:11:14
【问题描述】:
将key 值写入文件会使程序崩溃。我知道这一点,因为我用key 值替换了正常的String,并且程序运行良好。为什么key 值会导致程序崩溃?
#include <stdio.h>
#include <conio.h>
int main() {
FILE *fp;
fp = fopen("C:\\Users\\Francisco\\Documents\\C programs\\log.txt", "w");
int key;
while(1) {
if(_kbhit()) {
key = _getch();
fprintf(fp, (const char*) key);
}
}
fclose(fp);
return 0;
}
【问题讨论】:
-
在
fprintf(fp, (const char*) key);中,您没有提供格式字符串。是时候阅读printf系列函数的手册页了吗?强制转换可能会导致编译器警告失效,但int仍将被视为要取消引用的地址。 -
为什么要将 char(int 形式)转换为 char*?
-
fputc(key, fp);也就是说,这个循环很糟糕。它基本上是在旋转 CPU 等待按键检测。