来自' const char *'的无效转换去#char;' [-fpermissive]

时间:2017-12-26 00:53:29

标签: c

在下面的代码中,这一行:

b[6] = Hello

抛出此错误:

invalid conversion from 'const char*' to 'char' [-fpermissive]

问题

为什么我收到此错误?实际上,我想要的只是声明" b [6]"分别。不像char b [6] ="你好"喜欢如果我拿一个int变量说&#3​​4; int x"然后我可以轻松地单独声明它的值" x = 2"但是在这里,对于字符串变量,为什么我无法做到这一点。

int a;
char b[6];

scanf("%d", &a);
if( a == 1)
    b[6] = "Hello";
else
    printf("Wrong");

4 个答案:

答案 0 :(得分:2)

在C中,字符串被视为<div class="outer circle shapeborder"> <span>Release planning</span> <div class="inner circle shapeborder"> <span>Iteration planning</span> <div class="inner circle shapeborder"> <span>Daily planning</span> </div> </div> </div>数组,并且数组的名称被视为指向数组开头的指针。

char

基于此声明,char b[6]; 是指向6 b s数组开头的指针。

char

此行尝试将b[6] = "Hello"; 的第6个元素设置为&#34; Hello&#34;,但这样做有两个问题:

  1. b实际上并不存在。 b[6]长度为6个元素,从索引0开始,因此您可以使用的最高索引是5.

  2. b是一个数组,因此b引用特定的b[6],而您尝试将其设置为String,即指向char的指针,因此你的错误信息。

  3. 如果你试图让char保持&#34; Hello&#34;的值,有很多方法可以做到这一点。从理论上讲,你的b方法可行,但大多数人可能认为这是不好的做法。最基本的是将数组中b = "Hello";的值设置为&#34; Hello&#34;中的字母。一个接一个,后跟一个char字节。使用NULL标准库,您可以(也可能应该)使用<string.h>来执行此操作。

    strcpy

答案 1 :(得分:0)

b enter code here [6] =&#34;你好&#34 ;;

在这里,您将char char *分配给单个char(此外,char超出范围)。

如果你想要举办&#34; H&#34;做:

strcpy(b, "H");

答案 2 :(得分:0)

关于:

b[6] = "Hello";`  

引用数组时;结果是数组的第一个字节的地址。

因此该声明试图分配&#34; Hello&#34;的地址。到char b[]

您是否正在尝试填充数组b[]?如果是这样,那么正确的方法是:

strcpy( b, "Hello" );

答案 3 :(得分:-3)

你应该像b [] =“Hello”;

一样使用它