Вы находитесь на странице: 1из 20

1

Libreras Dev-C++
<assert.h> Contiene la macro assert (asercin), utilizada para detectar errores lgicos y otros
tipos de fallos en la depuracin de un programa.
<complex.h> Conjunto de funciones para manipular nmeros complejos (nuevo en C99).
<ctype.h> Contiene funciones para clasificar caracteres segn sus tipos o para convertir entre
maysculas y minsculas independientemente del conjunto de caracteres (tpicamente ASCII o
alguna de sus extensiones).
< errno.h> Para testar los cdigos de error devueltos por las funciones de biblioteca.
< fenv.h> Para controlar entornos en coma flotante (nuevo en C99).
< float.h> Contiene la definicin de constantes que especifican ciertas propiedades de la
biblioteca de coma flotante, como la diferencia mnima entre dos nmeros en coma flotante
(_EPSOLON), el nmero mximo de dgitos de precisin (_DIG), o el rango de valores que se
pueden representar (_MIN, _MAX).
< inttypes.h> Para operaciones de conversin con precisin entre tipos enteros (nuevo en C99).
< iso646.h> Para utilizar los conjuntos de caracteres ISO 646 (nuevo en NA1).
< limits.h> Contiene la definicin de constantes que especifican ciertas propiedades de los tipos
enteros, como rango de valores que se pueden representar (_MIN, _MAX).
< locale.h> Para la funcin setlocale() y las constantes relacionadas. Se utiliza para seleccionar el
entorno local apropiado (configuracin regional).
< math.h> Contiene las funciones matemticas comunes.
< setjmp.h> Declara las macros setjmp y longjmp para proporcionar saltos de flujo de control de
programa no locales.
< signal.h> Para controlar algunas situaciones excepcionales como la divisin por cero.
< stdarg.h> posibilita el acceso a una cantidad variable de argumentos pasados a una funcin.
< stdbool.h> Para el tipo booleano (nuevo en C99).
< stdint.h> Para definir varios tipos enteros (nuevo en C99).
< stddef.h> Para definir varios tipos de macros de utilidad.
< stdio.h> Proporciona el ncleo de las capacidades de entrada/salida del lenguaje C (incluye la
venerable funcin printf).
< stdlib.h> Para realizar ciertas operaciones como conversin de tipos, generacin de nmeros
pseudo-aleatorios, gestin de memoria dinmica, control de procesos, funciones de entorno, de
sealizacin (??), de ordenacin y bsqueda.
< string.h> Para manipulacin de cadenas de caracteres.
< tgmath.h> Contiene funcionalidades matemticas de tipo genrico (type-generic) (nuevo en
C99).
< time.h> Para tratamiento y conversin entre formatos de fecha y hora.
< wchar.h> Para manipular flujos de datos anchos y varias clases de cadenas de caracteres
anchos (2 o ms bytes por carcter), necesario para soportar caracteres de diferentes idiomas
(nuevo en NA1).
< wctype.h> Para clasificar caracteres anchos (nuevo en NA1).
2

Funcin strcat ANSI C


char *strcat(char*s1, const char *s2);
Aade una copia de la cadena apuntada por s2 (incluyendo el carcter nulo) al final de la cadena
apuntada por s1. El carcter inicial de s2 sobrescribe el carcter nulo al final de s1.
La funcin retorna el valor de s1. Si la copia hace que los objetos se superpongan, entonces el
comportamiento no est definido.
Ejemplo:
#include <stdio.h>
#include <string.h>

int main()
{
char s1[11] = "Hola ";
char s2[6] = "amigos";

printf( "s1=%s\t", s1 );
printf( "s2=%s\n", s2 );
strcat( s1, s2 );
printf( "s1=%s\n", s1 );

return 0;
}

Funcin randomize en Dev C++


#include <iostream>
using namespace std;

int main()
{
int i;
for(i=0; i<5; i++)
{
cout<<rand()%12; }
return 0;
}

Para cambiar el comportamiento del generador de nmeros aleatorios, podemos cambiar la


variable sobre la que se basa para realizar los clculos. A esta se le llama seed o semilla.
Esta semilla puede modificarse con la funcin srand():

srand(valor de la semilla)

La escritura de una funcin rdtsc() podr facilitarte las cosas, la sintaxis siguiente funciona con
GCC en Linux y la puedes encontrar con dev C++ en Windows:

#include <stdlib.h>
#include <stdio.h>
3

int rdtsc()
{
__asm__ __volatile__("rdtsc");
}

int main()
{
int i;
for(i=0; i<5; i++)
{
srand(rdtsc());
printf("%d\n", rand());
}
return 0;
}

Librera string.h

string.h es un archivo de la Biblioteca estndar del lenguaje de programacin C que contiene la


definicin de macros, constantes, funciones y tipos y algunas operaciones de manipulacin de
memoria.

Las funciones declaradas en string.h se han hecho muy populares, por lo que estn garantizadas para
cualquier plataforma que soporte C. Sin embargo, existen algunos problemas de seguridad con estas
funciones, como el desbordamiento de buffer (buffer overflow), que hacen que algunos
programadores prefieran opciones ms seguras frente a la portabilidad que estas funciones ofrecen.
Adems, las funciones para cadenas de caracteres slo trabajan con conjuntos de caracteres ASCII o
extensiones ASCII compatibles.

Funciones de string.h

Nombres Descripcin

memcpy copia n bytes entre dos reas de memoria que no deben solaparse

copia n bytes entre dos reas de memoria; al contrario que memcpy las reas pueden
memmove
solaparse

busca un valor a partir de una direccin de memoria dada y devuelve un puntero a la


memchr
primera ocurrencia del valor buscado o NULL si no se encuentra

memcmp compara los n primeros caracteres de dos reas de memoria


4

memset sobre escribe un rea de memoria con un patrn de bytes dado

strcat aade una cadena al final de otra

strncat aade los n primeros caracteres de una cadena al final de otra

strchr localiza un carcter en una cadena, buscando desde el principio

strrchr localiza un carcter en una cadena, buscando desde el final

strcmp compara dos cadenas alfabticamente ('a'!='A')

strncmp compara los n primeros caracteres de dos cadenas numricamente ('a'!='A')

strcoll compara dos cadenas segn la colacin actual ('a'=='A')

strcpy copia una cadena en otra

strncpy copia los n primeros caracteres de una cadena en otra

strerror devuelve la cadena con el mensaje de error correspondiente al nmero de error dado

strlen devuelve la longitud de una cadena

devuelve la posicin del primer carcter de una cadena que no coincide con ninguno
strspn
de los caracteres de otra cadena dada

devuelve la posicin del primer carcter que coincide con alguno de los caracteres de
strcspn
otra cadena dada
5

encuentra la primera ocurrencia de alguno de los caracteres de una cadena dada en


strpbrk
otra

strstr busca una cadena dentro de otra

strtok parte una cadena en una secuencia de tokens

strxfrm transforma una cadena en su forma de colacin (??)

strrev invierte una cadena

Archivos secuenciales

#include <stdio.h>

#include <conio.h>

#include <string.h>

struct {

int matricula;

char nombre[30];

int edad;}alumno;

void main() {

clrscr();

//creando y cerrando el archivo en disco

FILE *archdisco;

archdisco = fopen("cpp:\\ac\\alumnos.dat","w");

fclose(archdisco);
6

printf("ARCHIVO CREADO");

getchar();getchar();

Altas, bajas y modificaciones

1. /*

2. * autor: online.enlared@gmail.com

3. */

4. /* DECLARACION DE LIBRERIAS QUE SE VAN A UTILIZAR */

5. #include <stdio.h>

6. #include <ctype.h>

7. #include <string.h>

8. #include <stdlib.h>

9. #define M 3

10. #define FLUSH while(getchar() != '\n')

11. /* ESTRUCTURA DE LOS DATOS QUE VOY A USAR */

12. struct modelo

13. {

14. char codigo[5], descripcion[30];

15. float precio;

16. int stock;


7

17. };

18.

19. /* DEFINICION DE PROTOTIPOS */

20. void Menu();

21. void ValidarCodigo(char[]);

22. void ValidarCadena(char[]);

23. void IngresoDatos(struct modelo []);

24. void BajaDatos(struct modelo []);

25. void MuestraDatos(struct modelo []);

26. void ModificaDatos(struct modelo []);

27.

28. /* ACA ESTA EL MAIN */

29. int main ()

30. {

31. /* DECLARACIOM DE VARIABLES */

32. int i, opc1=9;

33. struct modelo datos[M];

34. /* PUESTA EN CERO DEL VECTOR DE CODIGOS */

35. for(i=0;i<M;i++)

36. strcpy(datos[i].codigo, "0000");

37. /* MENU PRINCIPAL */

38. while (opc1!=5)


8

39. {

40. Menu();

41. /* LEE OPCION*/

42. scanf("%d", &opc1);

43. switch (opc1)

44. {

45. /* OPCION ALTA DE PRODUCTOS*/

46. case 1:

47. IngresoDatos(datos);

48. break;

49. /* OPCION QUE DA DE BAJA UN ARTICULO */

50. case 2:

51. BajaDatos(datos);

52. break;

53. /* OPCION MUESTRA EN PANTALLA */

54. case 3:

55. MuestraDatos(datos);

56. break;

57. /* OPCION DE MODIFICACION DE ARTICULOS */

58. case 4:

59. ModificaDatos(datos);

60. break;
9

61. case 5:

62. system("cls");

63. printf("Fin del programa\n");

64. system("pause>>null");

65. break;

66. default:

67. printf("Opcion incorrecta");

68. system("pause>>null");

69. break;

70. }

71. }

72. return 0;

73. }

74. /* DEFINICION DE LAS FUNCIONES*/

75. void Menu()

76. {

77. system("cls");

78. printf("Menu principal\n");

79. printf("--------------\n");

80. printf("1 - Alta\n");

81. printf("2 - Baja\n");

82. printf("3 - Muestra en pantalla\n");


10

83. printf("4 - Modificacion\n");

84. printf("5 - Salir\n");

85. printf("Elija opcion: ");

86. }

87.

88. void ValidarCadena(char cadena[])

89. {

90. char aux[2000];

91. FLUSH;

92. fgets(aux, 2000, stdin);

93. while (strlen(aux)<1 || strlen(aux)>30)

94. {

95. printf("\nReingrese descripcion, maximo 30: ");

96. scanf("%s", aux);

97. }

98. strcpy(cadena, aux);

99. return;

100. }

101.

102. void ValidarCodigo(char codigo[])

103. {

104. char aux [50];


11

105. // FLUSH;

106. scanf("%s", aux);

107. while (strlen(aux)!=4)

108. {

109. printf("Reingrese codigo (4 caracteres): ");

110. scanf("%s", aux);

111. }

112. strcpy(codigo, aux);

113. }

114.

115. void IngresoDatos(struct modelo datos[])

116. {

117. int i;

118. float tempfloat;

119. system("cls");

120. printf("ALTA DE ARTICULOS\n");

121. printf("-----------------\n");

122. /* BUSCA UN LUGAR VACIO PARA GUARDAR*/

123. for(i=0;i<M;i++)

124. {

125. if(strcmp(datos[i].codigo, "0000")==0)

126. {
12

127. /* INGRESA CODIGO */

128. printf("Ingrese codigo: ");

129. ValidarCodigo(datos[i].codigo);

130. /* INGRESA DESCRIPCION */

131. printf("Ingrese Descripcion: ");

132. ValidarCadena(datos[i].descripcion);

133. /* INGRESA PRECIO */

134. printf("Ingrese Precio: ");

135. scanf("%f", &tempfloat);

136. datos[i].precio=tempfloat;

137. /* INGRESA STOCK */

138. printf("Ingrese Stock: ");

139. scanf("%d", &datos[i].stock);

140. break;

141. }

142. }

143. /* SI RECORRE TODO EL VECTOR DICE SI NO QUEDA ESPACIO O SI


FUE GUARDADO*/

144. if(i==M)

145. printf("No queda memoria suficiente para seguir guardar


datos\n");

146. else

147. printf("\nEl dato fue guardado exitosamente");


13

148. printf("\nPresione ENTER para continuar...");

149. system("pause>>null");

150. return;

151. }

152.

153. void BajaDatos(struct modelo datos[])

154. {

155. int a;

156. char aux[30];

157. system("cls");

158. printf("BAJA DE ARTICULOS\n");

159. printf("-----------------\n");

160. /* INGRESA CODIGO */

161. printf("Ingrese codigo del articulo que quiere dar de baja: ");

162. FLUSH;

163. gets(aux);

164.

165. /*VALIDA CODIGO A DAR DE BAJA A LA TERCERA VEZ VUELVE A MENU


PRINCIPAL*/

166. while (strlen(aux)!=4)

167. {

168. printf("Reingrese codigo que quiere dar de baja (rango 4):


");
14

169. FLUSH;

170. gets(aux);

171. }

172. /* BUSCA EN EL VECTOR SI LO ENCUENTRA PONE CODIGO A CERO*/

173. for(a=0;a<M;a++)

174. {

175. if(strcmp(aux, datos[a].codigo)==0)

176. {

177. strcpy(datos[a].codigo, "0000");

178. break;

179. }

180. }

181. /* COMPRUEBA SI RECCORIO TODO EL VECTOR NO LO ENCONTRO, SINO YA


ESTA BORRADO*/

182. if (a==M)

183. printf("\nCodigo de articulo no encontrado.");

184. else

185. printf("\nArticulo borrado exitosamente");

186.

187. printf("\nPresione ENTER para continuar...");

188. system("pause>>null");

189. }

190. void MuestraDatos(struct modelo datos[])


15

191. {

192. int i;

193. system("cls");

194. printf("LISTADO DE ARTICULOS\n");

195. printf("--------------------\n");

196. printf("Codigo Descripcion Precio Stock\n");

197. printf("------ ---------------------------- ------ -----\n");

198. /* LISTA TODO EL VECTOR CON SUS DISTINTOS TIPOS DE DATOS (EL -29
ES PARA QUE LOS CARACTERES SE PONGAN A LA IZQUIERDA)*/

199. for(i=0;i<M;i++)

200. {

201. if(strcmp(datos[i].codigo, "0000")!= 0)

202. {

203. printf("%6s %-29s %6.2f %6d\n", datos[i].codigo,


datos[i].descripcion, datos[i].precio, datos[i].stock);

204. }

205. }

206. printf("\nPresiones ENTER para continuar...");

207. system("pause>>null");

208. }

209.

210. void ModificaDatos(struct modelo datos[])

211. {
16

212. int a, modificar=9;

213. float tempfloat;

214. char aux[30];

215.

216. system("cls");

217. printf("MODIFICACION DE ARTICULOS\n");

218. printf("-------------------------\n");

219. /* INGRESAS EL CODIGO A MODIFICAR */

220. printf("Ingrese codigo de articulo: ");

221. FLUSH;

222. gets(aux);

223. /* VALIDA */

224. while (strlen(aux)!=4)

225. {

226. printf("Reingrese codigo (4 caracteres): ");

227. FLUSH;

228. gets(aux);

229. }

230. /* RECORRE TODO EL VECTOR EN SU BUSQUEDA */

231. for(a=0;a<M;a++)

232. {

233. if(strcmp(aux, datos[a].codigo)==0)


17

234. {

235. system("cls");

236. /* MUESRTA SUBMENU DE OPCIONES */

237. printf("MODIFICAR ARTICULO numero %s\n", aux);

238. printf("------------------------------\n");

239. printf("1 - Modificar descripcion (Actualmente: %s)\n",


datos[a].descripcion);

240. printf("2 - Modificar precio (Actualmente: %.2f)\n",


datos[a].precio);

241. printf("3 - Modificar Stock (Actualmente: %d)\n",


datos[a].stock);

242. printf("4 - Volver al menu principal\n");

243. printf("Elija opcion: ");

244. /* LEE LA OPCION SELECCIONADA */

245. scanf("%d", &modificar);

246. switch(modificar)

247. {

248. case 1:

249. system("cls");

250.

251. /* INGRESA NUEVA DESCRIPCION */

252. printf("Ingrese nueva descripcion: ");

253. FLUSH;

254. gets(aux);
18

255.

256. /* LA VALIDA */

257. while(strlen(aux)<1 || strlen(aux)>29)

258. {

259. printf("Reingrese nueva descripcion (valor


maximo 29 caracteres): ");

260. FLUSH;

261. gets(aux);

262. }

263. /* LE ASIGNA EL NUEVO VALOR */

264. strcpy(datos[a].descripcion, aux);

265. printf("%s a sido asignado exitosamente.",


datos[a].descripcion);

266. system("pause>>null");

267. break;

268.

269. case 2:

270. system("cls");

271.

272. /* LEE NUEVO PRECIO Y LO ASIGNA */

273. printf("Ingrese nueva precio: ");

274. scanf("%f", &tempfloat);

275. datos[a].precio=tempfloat;

276. printf("%s ahora vale %.2f.",


19

datos[a].descripcion, datos[a].precio);

277. system("pause>>null");

278. break;

279. case 3:

280. system("cls");

281.

282. /* LEE NUEVO PRECIO Y LO ASIGNA */

283. printf("Ingrese nueva cantidad de stock: ");

284. scanf("%d", &datos[a].stock);

285. printf("%s ahora tiene %d articulos en el


sistema.",datos[a].descripcion, datos[a].stock);

286. system("pause>>null");

287. break;

288. case 4:

289. system("cls");

290. break;

291. }

292. break;

293. }

294. }

295.

296. /* SI NO ENCONTRO EL CODIGO MUESTRA UNA LEYENDA */

297. if (a==M)
20

298. {

299. printf("\nCodigo de articulo no encontrado.");

300. }

301.

302. printf("\nPresione ENTER para continuar...");

303. system("pause>>null");

304. }

Вам также может понравиться