我想向文本文件中写入一些文本,但是我需要目录中的通用USER。 例如。 C:/Users/USER/Desktop/test.txt
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<math.h>
#include<string.h>
#include<windows.h>
#include<signal.h>
void main() {
int i,l;
FILE *fp;
char text[255];
char verz[255];
char username[128];
DWORD usernamelen;
if(!GetUserName(username, &usernamelen)) {
printf("Error %d occured\n", (int)GetLastError());
}
strcat(verz,"C:/Users/");
strcat(verz,username);
strcat(verz,"/Destktop/test.txt");
printf("Dein Text: ");
fgets(text, 255, stdin);
fp = fopen(verz, "w");
fprintf(fp, "%s",text);
}
我希望桌面上有一个新文件,其中包含一些文本。
答案 0 :(得分:0)
在编写路径名时,您正在做
strcat(verz,"C:/Users/");
strcat(verz,username);
strcat(verz,"/Destktop/test.txt");
问题在于verz
未初始化,因此第一个strcat
调用未定义的行为,因为字符串不是空的/以Null终止的。
根据您的情况,结果可能会有所不同,文件名无效且未创建文件,但是您不知道这一点,因为您没有测试fopen
的返回值:
fp = fopen(verz, "w");
fprintf(fp, "%s",text);
一个快速修复程序是:
strcpy(verz,"C:/Users/");
使用sprintf
一行,更快更清晰:
sprintf(verz,"C:/Users/%s/Desktop/test.txt",username);
fp = fopen(verz, "w");
if (fp!=NULL)
{
fprintf(fp, "%s",text);
fclose(fp); // better close the file
}