C子串方法

Mic*_*ner 0 c linux string

你好我试图从一个更大的字符串中提取一个小字符串,基本上我给了一个带分隔符的字符串,我需要重新排列它.所以我要说"@the President#"@显示我必须开始的地方,#是子串的结尾.我正在使用strchr获取指向@符号的指针,我知道我需要搜索直到找到#符号.虽然从x到y函数没有,但我不确定如何从char指针到符号#.

    char *garbage = "@the president#";
    int count = 0;
    char a = strchr(garbage, @);
    char *sentence = NULL;
    while(start at a, garbage[count] != #){
       char sentence[count] = garbage[count];
       count++;
    }
Run Code Online (Sandbox Code Playgroud)

Pau*_*eau 5

使用这样的东西:

const char* posAtSign = strchr(searchString,'@');
if (posAtSign != NULL) {
    const char* posPoundSign = strchr(posAtSign+1,'#');
    if (posPoundSign != NULL) {
        const int numChars = posPoundSign - posAtSign - 1;
        strncpy(substringBuffer,posAtSign+1,numChars);
    }
}
Run Code Online (Sandbox Code Playgroud)

经过测试的代码:

char searchString[] = "@the president#";
char substringBuffer[128];

const char* posAtSign = strchr(searchString,'@');
if (posAtSign != NULL) {
    const char* posPoundSign = strchr(posAtSign+1,'#');
    if (posPoundSign != NULL) {
        const int numChars = posPoundSign - posAtSign - 1;
        strncpy(substringBuffer,posAtSign+1,numChars);
        substringBuffer[numChars] = '\0';
        printf("substring: '%s'", substringBuffer);
    }
}
Run Code Online (Sandbox Code Playgroud)