在C中创建具有不同名称的文件[重复]

问题描述 投票:-4回答:1

这个问题在这里已有答案:

我需要一个程序,可以让我多个accouts存储在不同的文件中。这是我到目前为止所做的,但出于某种原因(“test”+ userName +“。txt”,“a”);不起作用。感谢您的时间!

 
int main() {

char choice[10];
printf("create accout (1)");
printf("\nlogin to accout (2)\n");
scanf("%s", &choice);
getchar();

if (strcmp(choice, "1") == 0)
{
    char userName[1000];

    FILE *myFile;
    myFile = fopen("test" + userName + ".txt", "a");
    if (myFile == NULL) 
    {
        printf("file does not exist");
    } 
    else 
    {
        printf("Enter your username: ");
        gets(userName);
        fprintf(myFile, "%s", userName);
        fclose(myFile);
    }
} 

c file file-management
1个回答
0
投票

在C中,“strings”(char *)实际上只是指向char的零终止数组的第一个元素的指针,由库函数解释为字符串。

您不能简单地将这些指针与+连接起来,就像在其他一些具有显式字符串类型的语言中一样。

要组装一个字符串,你必须使用类似strcat()的东西到适当大小的缓冲区:

 char buffer[MAX_PATH]; 
 ... 
 strcpy(buffer, "test"); 
 strcat(buffer, userName); 
 strcat(buffer, ".txt"); 
 myFile = fopen(buffer, "a");

或者,您可以使用sprintf()

 int res = sprintf(buffer, "test%s.txt", userName);
 if (res > 0)
 {
     myFile = fopen(buffer, "a");

等等...

© www.soinside.com 2019 - 2024. All rights reserved.