Различные результаты при переборе строки и печати в определенной позиции (C)
Я изучаю C, и проблема, с которой я сталкиваюсь, заключается в том, что я перебираю строку до strlen()
Я ожидаю, что будет напечатан нулевой символ (ничего), но вместо этого я просто продолжаю получать '.' - тогда как если я распечатаю array[strlen(array)]
Я ничего не получаю (нулевой символ). Что здесь происходит?
#include <stdio.h>
#include <string.h>
#include <cs50.h>
int main(void)
{
char *mystring;
printf("Enter a string: ");
mystring = GetString();
//Prints '.' for mystring[i] when i = strlen(mystring)
for (int i = 0, j = strlen(mystring); i <= j; i++){
printf("The %dth character is: %c.\n", i+1, mystring[i]);
}
//Skips the line printing nothing ('\0')
printf("The last char is %c\n", mystring[strlen(mystring)]);
return 0;
}
2 ответа
Вы на самом деле печатаете эту точку каждый раз (сразу после %c
): "The %dth character is: %c.\n"
, Когда вы вводите нулевой символ %c
не будет печатать что-либо, так как оно пустое, и все, что вы видите, это точка после.
За \0
ничего не будет напечатано. Но у тебя есть .
после %c
в printf
заявление-
printf("The %dth character is: %c.\n", i+1, mystring[i]);
Благодаря этому .
при печати \0
он будет печатать только .
(Для нуля это ничего не будет печатать).
printf("The %dth character is: %c\n", i+1, mystring[i]); //remove that . and try!