目录中的通用用户?

时间:2019-03-22 20:28:49

标签: c

我想向文本文件中写入一些文本,但是我需要目录中的通用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);
}

我希望桌面上有一个新文件,其中包含一些文本。

1 个答案:

答案 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
}