我正在尝试通过用空引号替换它们来删除字符串中的字符。它给了我以下错误消息:
incompatible pointer to integer conversion assigning to
'char' from 'char [1]' [-Wint-conversion]
source[i] = "";
^ ~~
当我用一个字符替换空字符串时,我遇到了同样的错误,我认为这是替换数组元素的过程,所以我不确定如何继续。
这是我的代码:
#include <stdio.h>
#include <string.h>
int removeString(char source[], int startIndex, int numberRemove) {
int i;
for (i = startIndex; i < startIndex + numberRemove; i++) {
printf ("%c", source[i]);
source[i] = "";
}
for (i = 0; i < strlen(source); i++) {
printf("%c\n", source[i]);
}
return 0;
}
int main (void) {
char text[] = { 'T', 'h', 'e', ' ', 'w', 'r', 'o', 'n', 'g', ' ', 's', 'o', 'n' };
removeString(text, 4, 6);
return 0;
}
答案 0 :(得分:0)
尝试使用:
memset(source, 0, strlen(source));
这会将整个字符串长度设置为null终止char。你上面做了什么:
source[i] = "";
是一个错误,原因有以下几种:
答案 1 :(得分:0)
你不能将“”分配给char! “”是一个char *(最好说一个ASCII0字符串)。
我想你想在字符串中插入一个0代码!这不是一个好的选择,因为0表示ASCII0字符串的结尾。
您可以用空格替换字符:
source[i] = ' ';
但我认为这不是你想要的!
要取消字符串中的字符,必须在要删除的字符上删除要删除的字符后移动所有字符。 ;)
如果您希望将ASCII0字符串打印并作为空字符串管理 只需在第一个字节中输入0 !!!
source[0]=0;
或
*source=0;
答案 2 :(得分:0)
解决了它。基本上我循环遍历字符串并打印出字符,如果它们在指定的值范围内。
#include <stdio.h>
#include <string.h>
int removeString(char source[], int startIndex, int numberRemove) {
int i;
for (i = 0; i < strlen(source); i++) {
if (i < startIndex || i >= startIndex + numberRemove) {
printf("%c", source[i]);
}
}
return 0;
}
int main (void) {
char text[] = { 'T', 'h', 'e', ' ', 'w', 'r', 'o', 'n', 'g', ' ', 's', 'o', 'n', '\0' };
removeString(text, 4, 6);
return 0;
}