gpt4 book ai didi

c - 删除c中动态数组的最后一行和最后一列

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

我在 C 中创建了一个动态二维数组,声明为指针数组。如何删除指针数组中的最后一行及其指向的行?

如果我会使用

    arr=realloc(arr , i*sizeof(int *));

i 为 3(4 rows-1)

第四行中的列要删除还是我需要使用类似的东西?

    arr[i]=realloc(arr[i] ,sizeof(char));
arr=realloc(arr , i*sizeof(int *));

如果它是正确的或者我需要使用 免费()

<小时/>

这是我的代码,但我想删除带有列的最后一行,但我不知道如何

int main(void) {
char **arr,str[500];
int i=0,j,min_str_pos;
long min;
arr = malloc(sizeof(int *));
arr[i] = malloc(500*sizeof(char));
do {
printf("Enter a string (or just press <ENTER> to exit): \n");
fgets ( str, 500, stdin );
if (strcmp(str, "\n")) {
strcpy(arr[i],str);
i++;
arr=realloc(arr , (i+1)*sizeof(int *));
arr[i] = malloc(500*sizeof(char));
}
} while (strcmp(str, "\n"));

最佳答案

首先,我修复了您的代码,以便它至少可以编译:

int main(void) {
char **arr,str[500];
int i = 0;
arr = malloc(sizeof(int *));
arr[i] = malloc(500*sizeof(char));
do {
printf("Enter a string (or just press <ENTER> to exit)");
fgets (str, 500, stdin );
if (strcmp(str, "\n")) {
strcpy(arr[i], str);
i++;
arr=realloc(arr , (i+1)*sizeof(int *));
arr[i] = malloc(500*sizeof(char));
}
} while (strcmp(str, "\n"));
}

请注意,arr[i]=str; 不是复制字符串的正确方法。请改用 strcpy(arr[i], str);

要删除数组的最后一行,只需使用:

free(arr[i]);

现在,通过删除数组的最后一列,您的意思是要从数组中的每个 string 中删除最后一个 char 吗?

关于c - 删除c中动态数组的最后一行和最后一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14012249/

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