我试图替换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;
}
答案 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] = '-';
^^^^
}