Preguntas etiquetadas con c

82
¿Por qué la declaración "2i;" ¿NO causa un error del compilador?

En lugar de 2*i, escribí descuidadamente 2i: int foo(int i) { 2i; return 2i; } Esperaba que el compilador detectara el error. Pero no lo hizo. Entonces, ¿es 2iuna declaración válida en C? Si es así, ¿qué hace? ¡Perplejo! Compilé usando gcc versión 5.3.0 y aquí está el resultado del...

82
¿Por qué anular el valor de retorno de free?

Estoy leyendo un libro ( Programación con hilos POSIX de Butenhof, 1997) que usa C, y me encontré con la siguiente línea: (void)free(data); Aquí, dataes solo un puntero a una estructura asignada, data = malloc(sizeof(my_struct_t)); ¿Por qué es el resultado de freeser lanzado a void? Desde mi...

81
¿Cuándo usar valores sin firmar sobre los firmados?

¿Cuándo es apropiado usar una variable sin firmar sobre una firmada? ¿Y en un forbucle? Escuché muchas opiniones sobre esto y quería ver si había algo parecido a un consenso. for (unsigned int i = 0; i < someThing.length(); i++) { SomeThing var = someThing.at(i); // You get the idea....

81
Acolchado de cuerdas en C

Escribí esta función que se supone debe hacer StringPadRight ("Hola", 10, "0") -> "Hola00000". char *StringPadRight(char *string, int padded_len, char *pad) { int len = (int) strlen(string); if (len >= padded_len) { return string; } int i; for (i = 0; i < padded_len - len; i++)...

81
NSDictionary con claves ordenadas

Tengo un NSDictionary (almacenado en un plist) que básicamente estoy usando como una matriz asociativa (cadenas como claves y valores). Quiero usar la matriz de claves como parte de mi aplicación, pero me gustaría que estuvieran en un orden específico (no realmente un orden en el que pueda...

81
¿Es posible modificar una cadena de caracteres en C?

He estado luchando durante unas horas con todo tipo de tutoriales de C y libros relacionados con los punteros, pero lo que realmente quiero saber es si es posible cambiar un puntero de caracteres una vez que se ha creado. Esto es lo que he probado: char *a = "This is a string"; char *b = "new...