C:使用指针作为参数的void函数更改char数组的值

时间:2015-02-11 05:24:00

标签: c arrays pointers char void

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

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

这是作业的一部分,因此我无法更改主要内容(位于另一个文件中并包含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";

}

2 个答案:

答案 0 :(得分:0)

错误1:您尝试分配字符数组而不是字符。使用单引号分配字符 错误2:功能未在主内部调用 错误3:您已将字符数组声明为'str',但稍后您将其称为's'

答案 1 :(得分:0)

假设这是你打算做的: 使用单引号将字符分配给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';

}