gpt4 book ai didi

c - 如何从 C 函数中写入 char*

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

我正在努力编写一个作为参数传递的 char* 。我想从函数 write_char() 向 char* 写入一些字符串。使用下面的代码,我遇到了段错误。

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

void write_char(char* c){
c = (char*)malloc(11*(sizeof(char)));
c = "some string";
}

int main(){
char* test_char;
write_char(test_char);
printf("%s", test_char);

return 0;
}

最佳答案

您有两个问题(与您尝试做的事情相关,还有其他问题):

  1. C 中的参数按值传递,这意味着参数变量(write_char 函数中的 c)是一个副本 main 函数中 test_char 的值。修改此副本(例如为其赋值)只会更改局部变量值,而不会更改原始变量值。

  2. 第二次分配给变量会覆盖变量中的当前值。如果你这样做,例如

    int a;
    a = 5;
    a = 10;

    您(希望)不会想知道为什么在第二次赋值中将 a 的值更改为 10。变量是指针并不会改变该语义。

<小时/>

现在如何解决您的问题...第一个问题可以通过使函数返回改为指针来轻松解决。第二个问题可以通过将字符串复制到内存中而不是重新分配指针来解决。

所以我的建议是你编写类似的函数

char *get_string(void)
{
char *ptr = malloc(strlen("some string") + 1); // Allocate memory, +1 for terminator
strcpy(ptr, "some string"); // Copy some data into the allocated memory
return ptr; // Return the pointer
}

这可以用作

char *test_string = get_string();
printf("My string is %s\n", test_string);
free(test_string); // Remember to free the memory we have allocated

关于c - 如何从 C 函数中写入 char*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58081629/

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