我有这个C ++程序,它将获取密钥代码并将其作为字符串存储在文本文件中。运行程序后,该文件应该与我的cpp文件一起出现,但我没有出现。我认为这与文件输入和输出发生的Save函数有关。有没有人注意到任何错误(编译时我都没有。)
#include <jni.h>
#include <string>
#include <yos/Network.h>
#include "com_alecive_ydroid_MainActivity.h"
JNIEXPORT jstring JNICALL Java_com_alecive_ydroid_MainActivity_hello (JNIEnv *env, jobject obj) {
yos::Network yN;
return env->NewStringUTF("hello");
}
答案 0 :(得分:0)
使用C fprintf
时(这通常不在C ++中使用,请参阅ofstream)您不使用引用运算符&
,因为您将值传递给函数,而不是地址。格式化字符串也是错误的,你想要编写int %d
,而不是字符数组%s
(more here)
您的Save
功能应该是
int Save(int Key_Stroke, const char *file)
{
if((Key_Stroke == 1) || (Key_Stroke == 2) || (Key_Stroke == 5))
return 0;
FILE *OUTPUT_FILE = fopen(file, "a+");
if(OUTPUT_FILE != NULL)
{
fprintf(OUTPUT_FILE, "%d", Key_Stroke);
fclose(OUTPUT_FILE);
}
cout << Key_Stroke << endl;
return 0;
}
还要注意函数的第二个参数中的const
关键字。这应该用于避免写入恒定的内存区域 - 直接写入字符数组"LOG.TXT"
。
接下来,您应该始终检查您尝试写入的文件是否已正确打开if(OUTPUT_FILE != NULL)
。