Это может звучать немного глупо, но это то, как я получаю это, и я погуглил это, но никакого соответствующего решения не было найдено.
I always thought that in C, strings was terminated by '\0'
это один символ. (поэтому мы использовали одинарные кавычки)
Кроме того, мы можем сделать что-то вроде,
while ( a[i]!='\0' )
do blah blah
which suggests that '\0'
является одним символом и в идеале должен храниться в одной позиции.
Но когда я объявляю массив следующим образом:
char a[3];
и когда я пытаюсь выразить какое-то значение, скажите «привет».
Тогда
printing a[0] gives "h"
printing a[1] gives empty space
printing a[2] gives 0
, что наводит на мысль, что \ был сохранен в позиции 1, а '0' - в позиции 2. и вся вещь '\ 0' не была сохранена вместе, несмотря на то, что мы использовали ее как один символ.
Почему это так? Кто-нибудь может пролить некоторую ясность на то же самое?
Спасибо!
РЕДАКТИРОВАТЬ:
#include <stdio.h>
void main()
{
int i=0;
char a[2];
fgets(a,sizeof(a),stdin); // Here I input "Hi".
while(a[i]!='\0')
{
printf("%c",a[i]);
fflush(stdin);
i=i+1;
}
}