所以,我只是练习我的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();
}
}
}
答案 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()