0

c89 gcc(GCC)4.6.3

こんにちは、

* search='\0'でスタックダンプを取得しています。文字列をヌル文字で終了することは可能だと思いました。

char *ptr_name = "hello@home";
char *search = ptr_name;

search = strchr(ptr_name, '@');
search++;
*search = '\0';

提案をありがとう、

4

3 に答える 3

2

ptr_nameは、読み取り専用領域の文字列を指します。

代わりに試してください:

char ptr_name[] = "hello@home"
于 2012-04-25T10:10:54.150 に答える
1

それが文字通りの定数であるときではなく、あなたはできません。それをスタックまたはヒープ変数にstrcpy()してから、変更することができます。

于 2012-04-25T10:11:32.347 に答える
1

char *ptr_name = "hello@home";文字列定数を作成し、変更することはできません。

期待どおりの結果を得るには"hello@home"、配列を使用するため、char arr_name[] = "hello@home";または実行時に動的に使用するためにメモリを割り当てる必要がありmallocます。

プログラムは次のようになります。

#include <stdio.h>
#include <string.h>

int main()
{
    char arr_name[] = "hello@home";
    char *search = arr_name;

    printf("%s \n", arr_name);
    search = strchr(arr_name, '@');
    search++;
    *search = '\0';

    printf("%s \n", arr_name);

    return 0;
}

出力:

$ ./a.out 
hello@home 
hello@ 
$
于 2012-04-25T10:13:39.850 に答える