¿Qué debería realmente devolver strlen () en este código?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void)
{
char qq[] = {'a' , 'b' , 'c' , 'd'};
char qqq[] = "abcd";
printf("%d\n" , sizeof qq / sizeof qq[0]); // line A
printf("%d\n" , strlen(qq)); // line B
printf("%d\n" , sizeof qqq / sizeof qqq[0]); // line C
printf("%d\n" , strlen(qqq)); // line D
system("pause");
return 0;
}
Mira el código de arriba. La matrizqq
tiene cuatro elementos y la matrizqqq
tiene cinco elementos, el último de los cuales es'\0'
. Entonces entiendo las impresiones de la línea A4
y la línea C imprime5
. La línea D está bien conmigo. Entiendo questrlen(qqq)
es igual"sizeof qqq / sizeof qqq[0] - 1"
cuando se trata de cuerdas. Pero la línea B imprime15
lo que me deja perplejo ¿Por qué? (Yo uso vs2012.)