こんにちは私は文字列の最初の単語を削除しようとしています。 たとえば、buffer = "Hello my name is Code"
removeToken()
を実装した後、バッファーは"my name is Code"
になります。Cの文字列の最初の単語を削除する
私が現在行っているコードは、私にセグメント違反を与えています。
私は、次があります。
char *buffer = NULL;
char *buffercopy = NULL;
void startBuffer(char *inputLine) {
int length = strlen(inputLine);
buffer = (char *)malloc(length);
buffercopy = (char *)malloc(length);
strcpy(buffer, inputLine);
strcpy(buffercopy, inputLine);
}
char *removeToken() {
/* removes the first token from the buffer, buffer is reduced in size */
char *token;
char delimiters[2] = " ,";
int origLen = strlen(buffer);
token = strtok(buffer, delimiters);
printf("%s \n", token);
int p = strlen(token);
int i = 0;
while (buffer[i] != '\0') {
buffer[i] = buffer[i + p];
i++;
}
return buffer;
}
デバッガでコードを介して自分自身をステッピング試してみました:ここ
が修正バージョンですか?あなたはsegfaultが起こっているか知っていますか? –
はい! "while(buffer [i]!= ....")で始まるwhileループで発生しています。 – jobravooo