Análisis de varias preguntas comunes de entrevistas en lenguaje C
1. Obtenga el nombre del archivo en la ruta
char * FindFileName(char * s)
{
int len;
p>char *tmp=NULL;
ASSERT(s != NULL);
for (len=strlen(s); len>0;len --)
{
if((s[len]=='/') ||(s[len]=='//'))
{
tmp = &s[len+1];
descanso;
}
}
return tmp;
}
2. Convertir números enteros a caracteres
char * i2a(int n, char *s)
{
int i, signo;
ASSERT(s != NULL);
si ((signo = n) < 0)
{
n = -n; //conversión a un número positivo para tomar el lugar más fácilmente
}
hacer
{
s[i++] = n % 10 + '0';
}
mientras ((n /= 10) > 0)
si (signo < 0)
{
s[i++] = '-';
}
s [i ] = '/0';
reverse(s);
}
3. Convertir tipo de carácter a tipo entero
int a2i(char * s)
{
int i, n, signo;
ASSERT(s != NULL);
for (i = 0; s[i] == ' '; i++)
{
NULL //Si hay un espacio delante de la cadena, salte todos los espacios
}
signo = (s[i] == '-') ?-1 :1;
si (s[i] = = '+' || s[i] == '-')
{
i++; //determina si es una cadena de enteros positivos o una cadena de enteros negativos< / p>
}
for (n = 0; s[i] > = '0' && s[i] <= '9'; i ++)
{
n = 10 * n + (s[i] - '0');
}
signo de retorno*n;
}
4. La cadena de salida se invierte y la memoria no se puede asignar dinámicamente
char * reverse(char * s)
{
int c, i, j;
ASSERT(s! = NULL);
for (i = 0, j = strlen(s) - 1; i < j; i++, j--)
{
c = s[i];
s[i] = s[j];
s[j] = c;
>}
return s;
}
5. Encuentra si la subcadena existe
int strindex(char *str,char * searchstr)
{
int end, i, j;
ASSERT((str ! = NULL) && (searchstr != NULL) p>
//Calcular la posición final
end = strlen(str) - strlen(searchstr);
if ( end > 0 )
{
para (i = 0; i <= fin; i++)
{
para (j = i; str[j] == searchstr[ j-i];j++ )
{
if ( searchstr[j-i+1] == '/0' ) /* Fin de la palabra de subcadena*/
{
return i + 1 /* Buscar subcadena*/
}
}
}
}
}
}
devuelve -1;