用fopen写文件不起作用

时间:2018-05-18 11:29:25

标签: c winapi createfile

所以,我只是练习我的C编程技巧,我写了一个程序,获取密码并检查它,如果密码是正确的,所以它调用一个MessageBox并向用户显示一条消息,然后它检查现有文件如果文件不存在则使用CreateFile并且需要在里面写一些字符串。

由于某种原因,它不起作用,我无法理解为什么。

这是代码:

#include <stdio.h>
#include <Windows.h>
#include <string.h>
#pragma warning(disable:4996)


int main()
{
    char SecretPass[7] = "Az1236";
    char Userinput[7];
    int ResultCMP;


    printf_s("Insert Pass:");
    fgets(Userinput, 7, stdin);

    ResultCMP = strcmp(SecretPass, &Userinput);


    if (ResultCMP == 0)
    {
        int msg = MessageBox(NULL, "You Got In", "Wow", MB_ICONEXCLAMATION);
        if (msg == IDOK)
        {
            printf_s("Great! \n");
            char *szFileName = "C:\\Users\\shai\\Desktop\\Create\\kilroy.txt";

            FILE *fp = fopen(szFileName, "r");
            if (fp == NULL) {
                HANDLE h = CreateFileA(szFileName, GENERIC_READ | GENERIC_WRITE, NULL, NULL, CREATE_NEW, FILE_ATTRIBUTE_NORMAL, NULL);

                FILE *fp;
                fp = fopen(szFileName, "w+");
                fprintf(fp, "testtest");
                puts("Done");
                fclose(fp);

            }

            else
            {
                printf("File exists!\n");
                getchar();
                return 0;
            }


        }

        else
        {
            printf_s("wrong pass!");
            getchar();
        }



    }
}

1 个答案:

答案 0 :(得分:1)

你好,如果你使用fopen(FILE * fopen(const char * filename,const char * mode))那么这应该可以解决问题,请参阅下面的代码:

if (ResultCMP == 0)
{
    int msg = MessageBox(NULL, "You Got In", "Wow", MB_ICONEXCLAMATION);
    if (msg == IDOK)
    {
        printf_s("Great! \n");
        char *szFileName = "C:\\Users\\shai\\Desktop\\Create\\kilroy.txt";

        FILE *fp = fopen(szFileName, "r");
        if (fp == NULL) {

            FILE *fp = fopen(szFileName, "ab+");


            fprintf(fp, "testtest");
            printf("Done");
            fclose(fp);

        }

        else
        {
            printf("File exists!\n");
            getchar();
            return 0;
        }

a +或ab +或a + b 附加;打开或创建文件以进行更新,在文件结尾处写入fopen()

相关问题