-2

文字列を逆にしようとしています。1 つは文字列の先頭を指し、もう 1 つは文字列の末尾を指します。次に、ポインターの値を交換します。

int main()
{

    char *string = "stack overflow";
    int len = strlen(string);
    char *end;
    char tmp; //temporary variable to swap values

    //pointer pointing at the end of the string
    end = string+len-1;

    printf(" value of start and end %c %c", *string , *end); //correct values printed
    while(string<end)
        {

                tmp = *string;
                *string = *end; //segmentation fault
                *end = tmp;
                *string++;
                *end--;


        }


    return 0;

}
4

1 に答える 1

5
char *string = "stack overflow";

これにより、読み取り専用の文字列リテラルが作成されます。それを変更すると、未定義の動作になります。代わりに配列を使用します。

char string[] = "stack overflow";
于 2013-03-12T23:56:15.757 に答える