繁体   English   中英

如何在C中更改字符串数组中的单个字符串?

[英]How to Change individual strings in an array of strings in C?

我在下面粘贴了一个示例变量,以便指出我需要更改的内容。 如果你看这个数组中有四个字符串,我该如何更改其中一个字符串的字母(非手动)。 如果有人能解决这个问题,我会非常感激。

char *names[] = {
               "bill",
               "man",
              "test",
              "bob",
};

你拥有的是一个指针数组,每个指针指向一个字符串文字。 标准C中不允许修改字符串文字,这样做是未定义的行为

根据您的使用和需要,1)您可以获取字符串的副本并对其进行修改或2)将names声明为数组(而不是指针)并修改数组元素。

要在您的示例中将“bill”更改为“ball”,我认为这样做:

names[0][1] = 'a';

您可以使用sizeof()和指针来执行此操作,因为内存中的每个char都是线性的

例如: `

//Remove duplicate char in string 'in'
char* rem_dup(char* in){

    int i=0, j=0, pos=0;
    for(;i<strlen(in);i++){
    int charat = *(in+i);
    for(j=i+1;j<strlen(in);j++){
        if(charat == *(in+j)){
        *(in+i) = *(in+j) = -1;
        }
    }

    if(*(in+i) > 0){        
        *(in+pos) = *(in+i);
        pos++;
    }

    }

    *(in+pos) = 0;
    return in;
}

int main(){
    int i=0;
    char str[][100] = {"remove duplicates", "", "aabb", "ab", "a", "abba"};
    for(;i<sizeof(str)/sizeof(char);i+=sizeof(str[0])/sizeof(char)){
    printf("IN :%s\n",(char*)str+i);
    printf("OUT:%s\n", rem_dup((char*)str+i));
    }
    return 0;
}

`

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM