【问题标题】:C: Changing the value of a char array with a void function with a pointer as a parameterC:使用指针作为参数的 void 函数更改 char 数组的值
【发布时间】:2015-04-11 09:35:03
【问题描述】:

如果我尝试从 main 打印(如图所示),我会得到一堆奇怪的符号。如果我尝试从 func 打印,我会得到“分段错误”。

我也有警告:警告:赋值从没有强制转换的指针中生成整数

这是作业的一部分,所以我不能更改 main(它在另一个文件中并且包含 func 的原型。)

编辑:我明白了。使用 " 而不是 ' 是我的问题。我一直这样做。

#include <stdio.h>

int main(void)
{
   char s[33];
   void func(char *s);

      func(s);
      printf("%s\n", s);
      return 0;
}

void func (char *s){

s[0]="b";
s[1]="o";
s[2]="p";

}

【问题讨论】:

  • 嗯,这甚至​​无法编译。

标签: c arrays pointers char void


【解决方案1】:

错误 1:您试图分配字符数组而不是字符。使用单引号来分配字符。
错误 2:main 内部未调用函数
错误3:你已经将字符数组声明为'str',但后来你将它称为's'

【讨论】:

    【解决方案2】:

    假设您打算这样做: 使用单引号将字符分配给char array,并使用 null 终止字符串。

    #include <stdio.h>
    
    void func(char *s);
    int main(void)
    {
       char str[33];
    
          func(str);
          printf("%s\n", str);
    }
    
    void func (char *s){
    
    s[0]='b';
    s[1]='o';
    s[2]='p';
    s[3] = '\0';
    
    }
    

    【讨论】:

      猜你喜欢
      • 2018-12-11
      • 1970-01-01
      • 1970-01-01
      • 2011-02-05
      • 2015-03-17
      • 2015-04-18
      • 2020-12-31
      • 2016-05-03
      • 2016-12-13
      相关资源
      最近更新 更多