【问题标题】:How to pass string to a function in C [duplicate]如何将字符串传递给C中的函数[重复]
【发布时间】:2021-05-16 09:35:39
【问题描述】:

假设我有一个字符串“hello”。我想把它传递给一个函数

void fun(char *p)
{
printf("%s",*p);
}
int main()
{
fun("hello");
}

示例 2:

如何将字符传递给 char * ?

void fun(char *p)
{
printf("%s",*p);
}
int main()
{
char a = 'c';
fun(a);
}

为什么这不起作用?

如何在c中将字符串传递给函数不传递其地址

【问题讨论】:

  • printf("%s",*p); -> printf("%s",p);
  • 第二个:fun(a); => fun(&a);保留 * 在打印中。更改格式printf("%c",*p);阅读骗局进行解释。
  • @0___________ 帮我举个例子 2
  • @0___________ &a 不能用作字符串,因为没有终止空字符。
  • @MikeCAT 如果您阅读我的评论,则不需要空字符

标签: c


【解决方案1】:

代码不起作用,因为%s 接受指向字符串的指针,但传递了一个整数。 printf() 可能认为整数是指针,但实际上整数几乎没有机会成为有效指针。

printf("%s",*p); 调用 未定义的行为,因为 char 在预期 char* 的位置传递。您应该在此处删除 *。另外p 应该是const char* 而不是char* 告诉编译器该字符串没有被修改。

void fun(const char *p)
{
printf("%s",p);
}

要传递字符串(以空字符结尾的字符序列)而不传递其地址,您可以将字符串放入结构中并传递它们。

#include <stdio.h>

struct str_container {
    char str[32];
};

void fun(struct str_container sc)
{
    printf("%s",sc.str);
}

int main(void)
{
    struct str_container str = {"hello"};
    fun(str);
    return 0;
}

【讨论】:

  • 如何将字符传递给 char 指针?就像我的例子 2
  • @AmanJain“将字符传递给char *”是模棱两可的。你想传递一个字符串还是只是一个指向字符的指针?
  • 我的程序生成了一个 char,我还想将其重定向到具有 char*\ 的函数
  • 我要传递一个字符串
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-21
  • 1970-01-01
  • 2017-04-05
相关资源
最近更新 更多