0

我正在学习 C,strlen()我遇到的问题是,如果我遍历字符串直到并包括 —而如果我 print 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;
    }
4

2 回答 2

2

您实际上每次都在打印这个点(就在 之后%c"The %dth character is: %c.\n":。当您的输入是空字符%c时,它不会打印任何东西,因为它是空的,您所看到的只是之后的点。

于 2014-08-07T16:48:45.907 回答
0

因为\0什么都不会被打印出来。但是你有在声明.之后-%cprintf

printf("The %dth character is: %c.\n", i+1, mystring[i]);

因此.,打印时\0它只会打印.(对于 null 它不会打印任何东西)。

printf("The %dth character is: %c\n", i+1, mystring[i]); //remove that . and try!
于 2014-08-07T16:52:15.313 回答