gpt4 book ai didi

c - 当我使用 char 数组作为文件名时,fopen 总是返回 NULL,但如果我使用像 "file.txt"这样的名称,一切正常

转载 作者:太空宇宙 更新时间:2023-11-04 06:29:26 24 4
gpt4 key购买 nike

int save(int *file,int K)
{

int i;
char *name;
FILE *fp;

name=(char *)malloc(256);


puts("type file name\n");
getchar();
fgets(name,256,stdin);



if((fp=fopen(name,"w"))==NULL)
{
puts("file can't be opened\n");
return 0;
}

fprintf(fp,"%d\n",K);

for(i=0; i<K; i++)
{
fprintf(fp,"%d\n",*(file+i));
}


fclose(fp);

return 1;

}

为什么这不起作用,但当我使用 fopen("text.txt","w") 时一切正常?我该如何解决这个问题?

最佳答案

这是因为 fgets 将换行符 '\n' 附加到字符串。你需要先把它剪掉。

if (isspace(name[strlen(name)-1]))
name[strlen(name)-1] = '\0';

关于c - 当我使用 char 数组作为文件名时,fopen 总是返回 NULL,但如果我使用像 "file.txt"这样的名称,一切正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22355346/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com