gpt4 book ai didi

C:如何将任意数组放入可用内存中? (基本的)

转载 作者:太空宇宙 更新时间:2023-11-04 07:30:32 25 4
gpt4 key购买 nike

所以,我正在尝试制作一个简单的程序来反转字符串。说到 C,尤其是在理解内存方面,我非常不知所措。这是我的代码:

#include <stdio.h>
#include <string.h>

void reverser(char to_bb[]){
int counter = strlen(to_bb); /* size of entry */
char reversed[counter]; /* creating blank array of same size */
int counter2 = 0;
for(counter - 1; counter >= 0; counter--){ /* loop to swap chars */
reversed[counter2] = to_bb[counter];
counter2++;
}
printf("The reversed: %s\n", reversed);
}

int main(){
char to_be_reversed[20];
puts("Enter the string to be reversed: ");
scanf("%19s", to_be_reversed);
reverser(to_be_reversed);
return 0;
}

问题是,我不断收到总线错误。我使用了 sizeof(to_bb) 并了解到它是 4 位,表明 to_bb[] 只是我的 void 函数中的一个指针。我已经尝试了很多方法来提取字符串以便我可以操作它(即调用它的元素),但我没有找到成功。我尝试了 strcpy() 和更多使用 * 的冗长声明。

感谢您的任何建议。事实证明,内存很难理解!

最佳答案

for 中,将 counter - 1 更改为 counter = counter-1 或等效地,--counter.

reversed 的大小上再增加一个字符,并将其设置为'\0',这样它就以null 终止了。或者,您可以使用以下方法限制打印的字符数:

printf("The reversed: %.*s\n", counter2, reversed);

关于C:如何将任意数组放入可用内存中? (基本的),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14202729/

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