无法打印字符串

时间:2019-03-07 14:09:14

标签: c

我们如何使用指针替换字符串中的空格?我尝试过但无法获得它。 在用连字符替换空格的同时,控件脱离了循环而无需进一步跟踪。

while (*str != '\0')
{
    if (*str == ' ') 
    *str = '-'; 
    str++;
 }
 print(str);

2 个答案:

答案 0 :(得分:0)

指针是用于存储其他变量地址的特殊类型的变量。当您使用“ str ++”更改str指针内的值时,它指向下一个元素,而while循环后的str指向字符串('\ 0')的最后一个元素。因此,您必须存储字符串的第一个字符的地址,以便以后对其进行处理。

int main() {
    char *s = "abcde", *str =s; // s,str stores address of first character

    while(*str!='\0'){
        if(*str ==' ') 
            *str='-';
        printf("%c", *str);
        str= str+1; // str now points to the next character. But s remains unchanged
    }


   }

答案 1 :(得分:0)

使用指针执行此操作并递增指针时,print(str)将向您显示str的结尾,因此\0

您必须存储指向str开头的指针:

    char* str = (char*) malloc(sizeof(char) * 255);
    memcpy(str, "abc de", 255);
    char* beginStr = str;

    while(*str!='\0') {
        if (*str == ' ') {
            *str = '-';
        }
        str++;
    }

    printf("%s\n", beginStr);
    free(beginStr);
相关问题