Предположим, что у меня есть простая программа C, и я скомпилирую ее с помощью gcc -o hello hello.c
:
#include<stdio.h>
main()
{
printf("hello");
}
Теперь я хочу отобразить "строки" с помощью утилиты strings
:
$ strings hello
/lib64/ld-linux-x86-64.so.2
__gmon_start__
libc.so.6
printf
__libc_start_main
GLIBC_2.2.5
fffff.
l$ L
t$(L
|$0H
hello
;*3$"
и, как и ожидалось, я вижу строку "привет" в двоичном формате.
Однако, когда я изменяю свою программу C
и ставил "привет" как константу:
#include<stdio.h>
char s[6] = {'h','e','l','l','o','\0' } ;
main()
{
printf("%s\n", s);
}
Я больше не вижу строку "привет" в двоичном формате.
Может кто-нибудь объяснить, почему?