语言C:指向整数转换的指针,指定给';char';从';char[2]';

语言C:指向整数转换的指针,指定给';char';从';char[2]';,c,pointers,C,Pointers,我试图替换C字符串的所有字母(从第一个位置开始),但出现以下错误: 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 parol

我试图替换C字符串的所有字母(从第一个位置开始),但出现以下错误:

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;
}
#包括
#包括
#包括
int main(int argc,char const*argv[]{
char parola1[50]=“Parola 1”;
char-parola2[50];
int i;
strcpy(parola2,parola1);
对于(i=1;i
“-”
是一个字符数组。如果要指定字符,请使用
'-'

请注意,使用
strlen()
is循环条件将导致性能损失

试试这个:

#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;
}
#包括
#包括
#包括
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
“-”
是一个字符数组。如果要分配字符,请使用
'-'

请注意,使用
strlen()
is循环条件将导致性能损失

试试这个:

#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;
}
#包括
#包括
#包括
int main(int argc,char*argv[]){
char parola1[50]=“Parola 1”;
char-parola2[50];
int i,len;
strcpy(parola2,parola1);

对于(i=1,len=strlen(parola2);对于初学者,这个循环看起来很奇怪

  for(i=1;i<strlen(parola2);i++)
      ^^^          ^^^^^^^
  {
    parola1[i]="-";
    ^^^^^^^    ^^^
  }
您正试图将类型为
char[2]
的字符串literal
“-”
,转换为指向其第一个元素的指针,指向类型为
char
的对象
parola1[i]

并且不需要调用函数
strlen
来执行循环

我想你想要的是

strcpy( parola2, parola1 );

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

首先,这个循环看起来很奇怪

  for(i=1;i<strlen(parola2);i++)
      ^^^          ^^^^^^^
  {
    parola1[i]="-";
    ^^^^^^^    ^^^
  }
您正试图将类型为
char[2]
的字符串literal
“-”
,转换为指向其第一个元素的指针,指向类型为
char
的对象
parola1[i]

并且不需要调用函数
strlen
来执行循环

我想你想要的是

strcpy( parola2, parola1 );

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

对字符常量使用单引号。投票以键入结束。
parola1
中的第一个位置是
0
,而不是
1
。对字符常量使用单引号。投票以键入结束。
parola1
中的第一个位置是
0
,而不是
1
。编译器可以执行循环不变优化因此,这可能不会导致性能损失编译器可以执行循环不变优化,因此这可能不会导致性能损失