このコードは10番目と11番目の文字を ''と '@'としてn = 11を返します これはどのように機能しますか? strlen関数はどのようにして11文字にしますか?いくつかのコンパイラでは、文字列の長さが12文字になるようです。 C
でヌル文字のない文字列のstrlenはどのように計算されますか?
#include <stdio.h>
#include <string.h>
void fun(char *arr)
{
int i;
unsigned int n = strlen(arr);
printf("n = %d\n", n);
for (i=0; i<n; i++)
printf("%c ", arr[i]);
}
int main()
{
char arr[] = {'g', 'e', 'e', 'k', 's', 'q', 'u', 'i', 'z'};
fun(arr);
return 0;
}
未定義の動作 - ここでは、segフォルトまたは非終了を含む何かが発生する可能性があります。 –
"geeksquiz"定数の終わりの後のどこかにnul文字があるとします。読み込み専用のデータセグメントに他の値を与えるロジックがあるかもしれませんが(念頭に置く必要はありません)、確かにあなたが頼りにするものではありません。 – Rup
"ヌル文字のない文字列" **は文字列ではありません** – pmg