如何解决在char指针中间添加\ 0
我有一个较大的字符串,我想在包含特定字符串之前添加\ 0字符。
例如:
inputString =“ some2.text.here”; => outputText =“ some2”;
我设法找到输出文本的最后位置,我不知道如何添加\ 0并使指针在此处结束。
void test()
{
char* str = "some2.text.here";
char* search = ".text.here";
char * new;
//size text to be removed
int lengthOfStr = 10; //search length
int size = 0;
char stringEnding = '\0';
char * newPath;
new = '\0';
for(int i = 0; i < 200; i++){
if(*(str + i) == '\0'){
printf("found on index %d",i);
printf("\n i: %d \n lengthOfStr : %d",i,lengthOfStr);
new = (char *) malloc(i - lengthOfStr);
memcpy(new,str,sizeof(i - lengthOfStr));
break;
}
}
printf("\n string value : %s",new);
}
在这里,我尝试复制特定长度,但是效果不佳...我也尝试添加str [5] ='\ 0',但是也没有成功...任何提示吗?
解决方法
似乎有3个问题。
-
分配的内存太少
-
复制的字节数错误
-
缺少字符串终止符
类似的东西:
new = malloc(i - lengthOfStr + 1); // Allocate 1 more char
memcpy(new,str,i - lengthOfStr); // Correct number of bytes to copy
new[i - lengthOfStr] = '\0'; // Terminate the string
BTW:您的当前代码始终希望“搜索”字符串位于当前字符串的末尾。也许这就是您想要的,但是在我看来,您应该使用strstr
而不是循环。而且...使用strlen
而不是硬代码长度。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。