C: странное явление - PullRequest
       39

C: странное явление

0 голосов
/ 19 апреля 2011

кто-нибудь может объяснить это явление.

#include "stdio.h"
#include "stdlib.h"

int main()
{
    char foo[]="foo";
    char bar[3]="bar";
    printf("%s",foo);
    printf("\n");
    printf("%s",bar);
    return 0;
}

Результат:

foo
barfoo

Если я изменю порядок и создаю бар перед foo, я получу правильный вывод.

#include "stdio.h"
#include "stdlib.h"

int main()
{
    char bar[3]="bar";
    char foo[]="foo";
    printf("%s",foo);
    printf("\n");
    printf("%s",bar);
    return 0;
}

Результат:

foo
bar

И еще один.

#include "stdio.h"
#include "stdlib.h"

int main()
{

    char foobar[]="foobar";
    char FOO[3]={'F','O','O','\0'};
    char BAR[3]="BAR";
    printf("%s",foobar);
    printf("\n");
    printf("%s",FOO);
    printf("\n");
    printf("%s",BAR);
    return 0;
}

Результат:

foobar
FOOfoobar
BARFOOfoobar

Ответы [ 11 ]

0 голосов
/ 19 апреля 2011

вам не хватает \ 0 в конце строки .. и массив с 4 элементами объявлен как FOO [4], а не FOO [3] ..

...