试图删除字符串字符

时间:2015-04-13 23:36:00

标签: c arrays string

我正在尝试通过用空引号替换它们来删除字符串中的字符。它给了我以下错误消息:

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;
}

3 个答案:

答案 0 :(得分:0)

尝试使用:

memset(source, 0, strlen(source));

这会将整个字符串长度设置为null终止char。你上面做了什么:

source[i] = "";

是一个错误,原因有以下几种:

  1. 在C中设置字符时,使用单引号:''
  2. empty和null terminate char不一样。

答案 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;
}