我在 C 程序中将 char
数组初始化为全局变量,默认文件位置/名称为
char file[] = "/home/jack/files/data.txt";
稍后在程序中,如果满足条件,我会读取一个包含新文件名的文件
int read_new_file(char *fname)
{
FILE *inp;
char buffer[255];
char oldFile[127], newFile[127];
inp = fopen(fname, "r");
while ( fgets(buffer, 255, inp) != NULL )
{
sscanf(buffer, "%s %s",oldFile,newFile);
file = newFile; // <---- Is this wrong/unsafe?
}
return 0;
}
我应该注意,假设文件 fname
只包含一行 2 个字符串。这只是为了展示代码的一般框架。我的问题,如代码中突出显示的那样,简单地尝试使用新字符串重新分配 char file
变量是错误的还是不安全的?
newFile
字符串的大小可能与其原始默认大小不同。必须预定义默认值,因为条件可能不需要读取新文件。如果分配错误或不安全,什么是更好的方法?
您需要声明 file
以便它足够大以容纳 newFile
。
char file[127] = "/home/jack/files/data.txt";
然后当你想更新它时,你使用:
strcpy(file, newFile);
我是一名优秀的程序员,十分优秀!