在C

时间:2017-12-30 15:09:32

标签: c file file-management

我需要一个可以让我存储在不同文件中的多个accout的程序。这是我到目前为止所做的,但出于某种原因(“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); } }

1 个答案:

答案 0 :(得分:0)

在C中,"字符串" (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");

等...