语言C:指向整数转换的指针,分配给' char'来自' char [2]'

时间:2016-02-27 14:14:01

标签: c pointers

我试图替换C字符串的所有字母(从第1个位置)但是我收到此错误:

pointer to integer conversion assigning to 'char' from 'char [2]'

这意味着什么以及我的代码有什么问题?

#include <stdio.h>
#include <string.h>
#include <ctype.h>

int main(int argc, char const *argv[]) {
    char parola1[50] = "Parola 1";
    char parola2[50];
    int i;

    strcpy(parola2, parola1);

    for (i = 1; i < strlen(parola2); i++) {
        parola1[i] = "-";
    }
    printf("La parola 1 contiene la parola %s\n", parola1);
    printf("La parola 2 contiene la parola %s\n", parola2);
    return 0;
}

2 个答案:

答案 0 :(得分:3)

"-"是一个字符数组。如果要分配字符,请使用'-'

请注意,使用strlen()循环条件会导致性能下降。

试试这个:

#include <stdio.h>
#include <string.h>
#include <ctype.h>

int main(int argc, char *argv[]) {
  char parola1[50]="Parola 1";
  char parola2[50];

  int i, len;


  strcpy(parola2,parola1);

  for(i=1, len = strlen(parola2);i<len;i++)
  {
    parola1[i]='-';

  }
  printf("La parola 1 contiene la parola %s\n", parola1);
  printf("La parola 2 contiene la parola %s\n", parola2);
  return 0;
}

答案 1 :(得分:1)

对于初学者来说,这个循环看起来很奇怪

  for(i=1;i<strlen(parola2);i++)
      ^^^          ^^^^^^^
  {
    parola1[i]="-";
    ^^^^^^^    ^^^
  }

在循环的条件下,使用变量parola2,而在循环体内则使用变量parole1

还不清楚你是否确实希望索引从1开始而不是从0开始。

在本声明中

    parola1[i]="-";

您正在尝试分配类型为"-"的字符串文字char[2],并将其转换为指向其第一个元素的指针parola1[i]

的对象char

并且无需调用函数strlen来执行循环。

我想你想要的是以下

strcpy( parola2, parola1 );

for( i = 0; parola1[i] != '\0'; i++ )
     ^^^^^
{
    parola1[i] = '-';
                 ^^^^
}