#include <stdio.h>
#include <assert.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[]) {
char * str = "Testing replace text...\n\n";
char* buffer = malloc(sizeof(char));
char* insertPoint = &buffer[0];
char* copy = str;
char* p = strstr(str, "epl");
char* g = "gard";
int size = 0;
size = p-copy; //p = 9, which is the number of elemts till the first element of the substring
//want to allocate this space, and then increment insertPoint, by that amt(it'll be pointing
// to nothing)
buffer = realloc(buffer, size);
printf("Size: %d\n", size);
memcpy(insertPoint, copy, size);
printf("COPY: %s\n", buffer);
copy += size;
buffer = realloc(buffer, size+strlen(g));
insertPoint += size;
printf("%c", *insertPoint);
memcpy(insertPoint, g, strlen(g)); //insert after the 9 letters, the string the size of g
size += strlen(g); //size if the size of the buffer
printf("Size2: %d\n", size);
printf("COPY2: %s\n", buffer);
return EXIT_SUCCESS;
}
ちょっとした実験コードです。私はstrの部分文字列eplを "gard"と置き換えようとしていますが、文字列バッファーに変更はありません。つまり、最初の文字列を意味しています。サブストリングが発生しますが、サブストリングで置換しようとすると機能しません。私は個々のポインタをテストしており、それらはすべて正しいように見えます...何が起こっているかわからない、どんな洞察?ありがとう...完全に実行可能なプログラム。サブストリングを見つけてCで置き換えます
[Cでの文字列を置換する機能は何ですか?](https://stackoverflow.com/questionsの可能性のある重複/ 779875/what-is-the-function-to-c-string-in-c) –
私はC言語で部分文字列置換を行う方法を見てきましたが、この小さなプログラムをこのサイトの答えの1つに基づいています - それは動作していません。これに加えて、このコードの特定の問題があります@AndrewWatson – GCGSAUCE
'malloc(sizeof(char))'が間違っています。むしろ、NULLに初期化してください。 –