这个问题在这里已有答案:
我需要一个程序,可以让我多个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中,“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");
等等...