0

私は 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;
    }
4

2 に答える 2

0

\0も印刷されません。しかし、あなたは声明の.%cに持っています-printf

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 に答える