es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Comparar un char* con char[] en C En C, un char* es un puntero a un carácter (o a una cadena de caracteres) y un char[] es una matriz de caracteres. Aunque ambos se utilizan para representar cadenas de caracteres, hay algunas diferencias importantes. Un char* puede apuntar a cualquier carácter o cadena de caracteres, lo que permite una mayor flexibilidad en la manipulación de la cadena. Sin embargo, puede ser más difícil de manipular que un char[] debido a la necesidad de desreferenciar el puntero para acceder a los datos reales. Por otro lado, un char[] es una matriz de caracteres con un tamaño fijo, lo que facilita su manipulación y almacenamiento. Sin embargo, si la cadena de caracteres es más larga que el tamaño de la matriz, puede ocurrir un desbordamiento de búfer y provocar errores en el programa. En resumen, el uso de un char* o un char[] depende del contexto específico del problema que se está abordando en el programa. Cada uno tiene ventajas y desventajas únicas que deben ser consideradas en la decisión de cuál usar.

Estoy intentando comparar un char[100] (nodo->fname) con un char* (name) en C y estoy obteniendo un segmentation fault en la función strcmp cuando los comparo:

struct mmap_info{
char fname[100];
}

pos search_mmap(list l, char *name){
for(pos p = first(
l); !end(l, p); p = next(l, p)){
struct mmap_info nodo = get(l, p);
if(strcmp(nodo->fname, name) == 0){
return p;
}
}
return NULL;
}

(Ya he malloc() nodo en otra parte del código)

¿Es esta la forma en que debo compararlos? Si no, ¿cómo debería hacerlo? ¡Gracias!

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Sí, esta es la forma correcta de compararlos. Asegúrese de que tanto nodo->fname como name estén correctamente asignados e inicializados antes de llamar a strcmp(). Además, asegúrese de que la longitud de name no sea mayor que 100 (el tamaño de nodo->fname).

Comments are closed.