gpt4 book ai didi

c - 如何在C中动态分配名称数组?

转载 作者:行者123 更新时间:2023-11-30 18:28:52 24 4
gpt4 key购买 nike

我在动态分配方面遇到一些问题,因为我不想指定数组的大小。基本上,我在程序中需要的是将文件名存储在数组中,并确保它不会浪费空间。

我试图做一些事情,比如创建数组name[255]以确保它有足够的空间,然后动态分配它,这样它只有所需的空间,比如写“matrix5”,然后将其存储在 name[255] 中,然后将 name[255] 更改为 name[8]

char file_name[255];

printf("what is the name of the file? [.txt]\n");
scanf_s(" %s", file_name[255]); //store name eg: "matrix5"

i = 0;
char **fullpath;
while (file_name[i] != '\0' && i <=strlen(file_name))
{
fullpath= (char**)malloc(sizeof(char*)); //In here it would then make file_name[255] into file_name[8]
fullpath[i] = file_name[i];
i++;
}

我需要在这里做什么?

最佳答案

文件名和路径名通常具有系统可以处理的最大长度。示例MAX_PATH 。声明一个数组来保存用户输入。 IMO,我将使用 2 倍大小的数组用于用户输入。

//                                +1 for \n
#define MY_BUFFER_SIZE (MAX_PATH*2 + 1)
char my_buffer[MY_BUFFER_SIZE];

读取文件名

printf("what is the name of the file? [.txt]\n");
if (fgets(my_buffer, sizeof my_buffer, stdin) == NULL) {
Handle_EnfOfFile_or_InputError();
return NULL;
}

删除潜在的尾随\n

my_buffer[strcspn(my_buffer, "\n")] = '\0';

创建一个副本

return strdup(my_buffer);

strdup() 不是标准 C 库函数,但很容易编写代码。 Example .

关于c - 如何在C中动态分配名称数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44334844/

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