gpt4 book ai didi

c - 传递 char[] 作为 c 中的引用

转载 作者:行者123 更新时间:2023-12-05 02:20:28 25 4
gpt4 key购买 nike

我正在尝试将一个 char[] 传递给一个函数并对其进行变异。以下代码针对我的测试用例按预期编译和工作,但我收到了一些编译器警告,我不知道如何解决它们。

代码: #包括 #包括

#define MAX_STRING_SIZE 100

void strOp(char **someString) {
snprintf( someString, sizeof(someString), "HELLO");
}

int main() {
char myString[MAX_STRING_SIZE];
strOp(&myString);
printf("%s\n", myString);
return 0;
}

警告:

  echoecho.c: In function ‘strOp’:
echoecho.c:18:3: warning: passing argument 1 of ‘snprintf’ from incompatible pointer type [enabled by default]
snprintf( someString, sizeof(someString), "HELLO");
^
In file included from echoecho.c:12:0:
/usr/include/stdio.h:386:12: note: expected ‘char * __restrict__’ but argument is of type ‘char **’
extern int snprintf (char *__restrict __s, size_t __maxlen,
^
echoecho.c: In function ‘main’:
echoecho.c:23:3: warning: passing argument 1 of ‘strOp’ from incompatible pointer type [enabled by default]
strOp(&myString);
^
echoecho.c:17:6: note: expected ‘char **’ but argument is of type ‘char (*)[100]’
void strOp(char **someString) {

我已经尝试了一些使用 *、*[] 和 ** 的组合,并发现了一些有效但总是有警告。任何想法如何清理它?

最佳答案

将指针传递给char

尝试

#include<cstdlib>
#include<string.h>
#define MAX_STRING_SIZE 100

void strOp(char *someString) {
snprintf( someString,MAX_STRING_SIZE, "HELLO");
}

int main() {
char myString[MAX_STRING_SIZE];
strOp(myString);
printf("%s\n", myString);
return 0;
}

关于c - 传递 char[] 作为 c 中的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39310915/

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