0

最後にいくつかのスペースがある文字列があります。最初のスペースが発生した位置でこの文字列を終了したいので、後でそれを行うstrncpy()と、スペースを含まない文字列の部分のみがコピーされます。

これは明らかに私にセゴートを与えるいくつかの試みです。やりたいことをどうやったらできるの?

int main() {
    char* s1 = "SomeString             ";
    *(s1 + 10)='\0';
    printf("%s\n",s1);

    return 0;
}
4

5 に答える 5

1

あなたはただ使うことができます

char s1[] = "SomeString             "; 

それ以外の

char* s1 = "SomeString             ";
于 2015-04-26T11:55:35.393 に答える
0

最初の空白文字 (もしあれば) を実際に見つける、より一般化された例。s1また、リテラル文字列 (つまり"this") が読み取り専用メモリに格納される可能性があるという問題を回避するために、 の定義方法が変更されていることにも注意してください。あなたの例s1では、リテラル文字列を直接指しています。リテラル文字列の下では、配列 s1 を初期化するために使用されます。

   int main() {
        char s1[] = "SomeString             ";
        char * spc = strchr(s1, ' ');
        if (spc != NULL) *spc = '\0';
        printf("%s\n",s1);

        return 0;
    }
于 2015-04-26T13:20:35.923 に答える