У меня есть следующий код C:
#include <stdio.h>
#include <strings.h>
int main(void){
char * str = "\012\0345";
char testArr[8] = {'\0','1','2','\0','3','4','5','\0'};
printf("%s\n",str);
printf("**%s**",testArr);
return 0;
}
См. Живой код здесь
У меня проблемы с пониманием результатов, и я погуглил, но не уверенчто я понимаю, почему нулевой символ в начале строки и почему один в середине будет вызывать отображение только строки «5».Кроме того, когда я назначаю каждый символ строки массиву testArr, а затем пытаюсь отобразить этот массив символов, результат отличается, несмотря на то, что строка и массив имеют одинаковые символы.Итак, я поражен неутешительными результатами, особенно их несоответствием.Со строкой str код отображает «5», потому что нулевые символы перезаписывают то, что находится в памяти?
Кроме того, в массиве, который я создал с использованием тех же символов, ничто не отображает данные, содержащиеся в массиве testArr.Является ли это тем, что, как только по какой-то причине встречается первый нуль, все остальное игнорируется?Если да, то почему такое же поведение не происходит со строкой str, которая содержит одинаковые символы?