我们如何使用指针替换字符串中的空格?我尝试过但无法获得它。 在用连字符替换空格的同时,控件脱离了循环而无需进一步跟踪。
while (*str != '\0')
{
if (*str == ' ')
*str = '-';
str++;
}
print(str);
答案 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);