【发布时间】:2017-12-03 00:08:15
【问题描述】:
你好,假设我有 2 个字符串,“Today is a nice day”和“ao”。我想删除出现在第一个字符串中的第二个字符串的字符。
这是我的问题:
char c[20];
char p[10];
int i,j;
int l1,l2;
printf("Enter a string \n");
scanf("%s",cd);
printf("Enter another string \n");
scanf("%s",car);
len1 = strlen(cd);
len2 = strlen(car);
for (i=0;i<len1;i++){
for (j=0;j<len2;j++){
if (cd[i]==car[j]){
cd[i]="";
}
}
}
我想要的是第一个字符串就像“Tdy is nice dy”。所以我清空元素相同的位置以便稍后重新定位。
显然“cd[i]==car[j]”不能在 C 上完成,我得到“从 'const char*' 到 'char' 的无效转换。
所以我几乎被困住了。我会感谢任何帮助。
【问题讨论】:
-
cd[]和char[]是如何声明和初始化的?请给minimal reproducible example。无论如何,比较两个字符是否相等是没有问题的。有问题的是你的下一行。 -
1) 发布真实完整的错误信息。 2)发布
cd和car的声明。 -
开启警告。这段代码甚至不应该编译,因为您将
const char *分配给char,即指向整数的指针:cd[i]="";字符串文字""在分配给某物时转换为指针,并且cd[i]大概是char。你有一个char的数组。您不能只是开始向其中分配指针并期望得到有意义的结果。