когда я пишу:
#include <cs50.h> // includes type string
#include <stdio.h>
void trial(string a[])
{
if(a[2] == '\0')
{
printf("Null\n");
}
}
int main(int argc, string argv[])
{
string a[] = {"1","2"};
trial(a);
}
Похоже, что массив строк не заканчивается нулевым символом.
Но когда я пишу int main (void), выводится «Null».
Еще более странно, когда я добавляю return 0; для int main (void) не выводится «Null».
Я не понимаю, что происходит, в коде лекции CS50, который работает ниже:
#include <stdio.h>
#include <cs50.h>
int len(string s)
{
int count=0;
while(s[count] != '\0')
{
count++;
}
return count;
}
int main(int argc, string argv[])
{
string s = get_string("Input: \n");
printf("Length of the string: %d \n",len(s));
return 0;
}
Мне известно о разнице между нашими массивами, моя - это массив строк, код выше - строка, которая является массивом символов. Но в некоторых постах я видел, что массивы символов не заканчиваются нулем. Но, возможно, в cs50.h они реализовали строку как массив символов, который заканчивается нулевым символом. Я потерян.