文件输入无效

时间:2015-06-05 17:25:11

标签: file-io fstream

我有这个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");
}

1 个答案:

答案 0 :(得分:0)

使用C fprintf时(这通常不在C ++中使用,请参阅ofstream)您不使用引用运算符&,因为您将值传递给函数,而不是地址。格式化字符串也是错误的,你想要编写int %d,而不是字符数组%smore 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)