允许用户用c命名文件

允许用户用c命名文件,c,C,嘿,伙计们,有没有一种方法可以编写一段代码,允许用户命名正在创建的文件?例如,在我的代码中 File * ftpr ftpr = fopen("my path/filenameiwanthere.txt", "w"); 因此,在我写的“我想要这里的文件名”区域中,我是否能够包含不带空格的字符串文字,以便用户可以创建文件名? 比如说,我在想 printf("What would you like to save this file under?); scanf("%s", filename);

嘿,伙计们,有没有一种方法可以编写一段代码,允许用户命名正在创建的文件?例如,在我的代码中

File * ftpr
ftpr = fopen("my path/filenameiwanthere.txt", "w");
因此,在我写的“我想要这里的文件名”区域中,我是否能够包含不带空格的字符串文字,以便用户可以创建文件名? 比如说,我在想

printf("What would you like to save this file under?);
scanf("%s", filename);
如果他们插入“car1” 我希望上面的内容基本上可以阅读

ftpr = fopen("mypath/car1.txt.", "w");
这里的想法是,我有一个朋友拥有一辆汽车,他做的每件事都是用笔和纸。客户姓名,汽车,车牌,要花多少钱,需要做什么,谁在车上工作,等等等等。但是它完全没有组织,所以为了帮助/加强我的编程技能,我想给他们写一些有用的东西。我有一个确切的想法,我会做什么。我只是想知道是否有办法将文件名保存为他们喜欢的名称。因此,如果他们在工作时在他们的台式电脑上,我可以有一个文件夹,上面写着“Cars”或其他什么,在这个文件夹中会有多个文件,上面有他们想要的名字和汽车的所有信息。谢谢大家。

您可以使用strcat()函数连接两个字符数组:

char fileName[10];
char path[50] = "myFilePath/";
scanf("%s", &fileName);
char *finalFileName = (char*) malloc(strlen(fileName));

for(i=0; i < strlen(fileName); i++){
    finalFileName += fileName[i];
    finalFileName++;
}
strcat(path, finalFileName);

//Now your final path with the given file name is in path.
//i.e, path = "myFilePath/finalFileName.txt"
char文件名[10];
char path[50]=“myFilePath/”;
scanf(“%s”和文件名);
char*finalFileName=(char*)malloc(strlen(fileName));
对于(i=0;i

希望这有帮助,尽管问吧。

但你到底有什么问题?您的问题很不清楚。您可以在这里查看如何在C中进行字符串连接,然后将文件名与“mypath/”连接起来,如果文件不存在,则处理最终的错误。如果我能给你一个建议,像Java或Python这样编写一个更高层次的代码可以让你从一开始就更容易,在帮助你的朋友的过程中少很多挫折感。很抱歉给你带来了困惑。Idk如何将用户选择的文件名包含到我尝试的路径中。Fopen(“mypath/%s”、“w”);但这给了我一个文件名%s.txt。因此,我想提示用户“嘿,你想把这个文件保存为什么?”他们写“car1”,这样在程序运行后,它会写入一个名为“car1”的文件,你也可以使用path=sprintf(“mypath/%s”,filename),然后使用fopen(path,“w”)。基本上你们的问题是字符串连接。我将尝试合并你们刚才提到的所有内容。我刚开始学习malloc。相信我,我在学校接受了一些研究机会,python的一切都运行得更好。所以我一直在慢慢地但肯定地自学这门语言。谢谢你,小伙子,我可以帮你。请随意将其视为结束主题的正确答案。如果用户希望文件名为“car”或“lexus”,我还会在scanf&filename语句中使用%d吗?我想您必须使用%s?哦,很好的提示:)您的答案中几乎每一行都有问题。首先,您使用的是
scanf(“%s”)
,而实际上您应该使用
fgets
。缓冲区对于几乎任何文件名来说都太小了。分配的内存区域太小,无法包含连续的名称等。for循环完全错误,增量错误,将字符串连接到字符串文本等等。