我希望输出为XOllo,但是段错是我得到的。
#include <stdio.h>
#include <string.h>
int main(){
char *buf="hello";
char *xys="XO";
while(*buf != 'l'){
*buf = *xys;
xys++;
buf++;
}
printf("%s \n", buf);
return 0;
}
O /对 - : 段错误
我需要o / p作为XOllo,但我得到了seg错误。请建议。
Please suggest.
答案 0 :(得分:0)
变量buf
和xys
指向不能更改的字符串文字,因此尝试访问重新写入导致SIGFAULT的值,而不是需要分配新变量和副本价值观:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(){
char *buf="hello";
char *xys="XO";
char *tmp = (char *)malloc(strlen(buf));
strcpy(tmp, xys);
strcpy(tmp+2, buf+2);
printf("%s \n", tmp);
free(tmp);
return 0;
}
如果您需要找到l
字符的确切位置,可以使用strchr
函数以下列方式获取其索引:
int index = -1
const char *ptr = strchr(buff, 'l');
if(ptr) {
index = ptr - values;
}