gpt4 book ai didi

c - 如何在 C 中覆盖预分配的 char 数组

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

我在 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);

关于c - 如何在 C 中覆盖预分配的 char 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39283329/

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