打开并编辑C中具有变量名称的外部文件

时间:2013-11-26 08:15:07

标签: c file-io io

快速提问,因为我只是设法在googlemobil上找到关于C ++的答案:有没有办法在C中打开和编辑文件,文件中有变量名?

让我们更清楚一点:我有一个提示,它会检查用户是否提供了文件名。如果没有输入文件名,程序会自动打开我在同一目录中创建的client.conf文件;现在这是if-else语句的简单部分。

但是,如果给出了名称,如何让我的程序在同一目录中创建文件givenInput.conf,并将数据发送给它?我想r / w交互与使用fopen()的if语句的第一种情况相同,但fopen()使用第一个参数const char * restrict filename,我试图为非常量的字符制作一些东西...

在C ++中,有一种方法可以通过创建一个单独的(空)数组来绕过它,粘贴输入然后只是添加字符串后缀;另外,它使用C ++特定的函数(我忘了名字,抱歉^^)来解析变量文件名....

任何想法如何在常规,简单的好'C中管理这个?我是C编程语言的新手,请为新手温柔;)

3 个答案:

答案 0 :(得分:1)

您可以发送一个非常量字符串,其中需要一个常量字符串,并且不需要强制转换。因此,只需使用以最适合您的方式构建的字符串打开文件:

char filename[1024];

getFilenameSomehow(filename, 1024);

fopen(filename, "w");

但是,您可能不会发送一个常量字符串,其中需要一个非常量字符串。

const char *myConst = "May not be changed";
memset(myConst, 'X', strlen(myConst));  // Error! You may not modify a const string.

答案 1 :(得分:0)

您可以将变量转换为const char *

char file_var_name[100];

scanf("%99s", file_var_name);

fopen((const char *) file_var_name, "r");

答案 2 :(得分:0)

您可以使用main()的命令行参数读取输入,即使用argcargv。请阅读this了解详情

使用strcat(存在于string.h中)在文件名末尾连接“ .conf ”。 阅读关于strcat的{​​{3}}。