Hier ist der Quellcode ist mit Funktion bekommt:Warum interpretiert die Funktion fgets im unten stehenden Programm (siehe Detail) die Länge der Zeichenfolge durch ein zusätzliches Zeichen?
//Finding length of a string//
#include<stdio.h>
#include<conio.h>
int main()
{
//Finding length by user written code//
int i=0;
char ar[200];
printf("So enter your string here: ");
gets(ar);
while(ar[i]!='\0')
i++;
printf("The length of your string is: %d",i);
getch();
return 0;
}
Hier sind die Ein- und Ausgang:
So enter your string here: Hello World
The length of your string is: 11
Aber wenn die Funktion von fgets Funktion ersetzt wird, ist, dass, wenn der Code geschrieben wird als:
//Finding length of a string//
#include<stdio.h>
#include<conio.h>
int main()
{
//Finding length by user written code//
int i=0;
char ar[200];
printf("So enter your string here: ");
fgets(ar,200,stdin);
while(ar[i]!='\0')
i++;
printf("The length of your string is: %d",i);
getch();
return 0;
}
Dann Eingang und Ausgang werden:
So enter your string here: Hello World
The length of your string is: 12
Also, warum funktioniert die fgets-Funktion die Länge mit einem zusätzlichen Zeichen?
Sie haben über die ' '\ n'' vergessen könnte? – EOF
Strings in C sind Null-terminiert, was bedeutet, dass "Hello World" tatsächlich "Hello World \ 0" ist. Verwenden Sie auch 'strlen', um Zeichen zu zählen;) – Shark
Sie könnten versucht haben, den numerischen Wert jedes seiner Elemente zu drucken, um zu sehen, was es enthält ... und lesen Sie die [man page] (https://msdn.microsoft.com /en-us/library/c37dh6kf.aspx). –