Beruflich Dokumente
Kultur Dokumente
Lectura de Input
Uso no recomendable:
fscanf(f,"numero: %d",&x);/* para leer n
umero seguido de la palabra
"numero:" (peligroso) */
Jorge Baier Aranda, PUC
2
3
3
3
Manejo de Strings
char *strstr(const char *haystack, const char *needle) Caractersticas: Retorna un puntero al primer caracter de la primera ocurrencia del string
needle dentro del string heystack o NULL si no hay tal ocurrencia.
char *strpbrk(const char *s, const char *accept)
Jorge Baier Aranda, PUC
Caractersticas:
4
#include <stdio.h>
#include <string.h>
#define MAX 1024
#define SEP "-----------------------"
int main() {
FILE *fp;
char buf[MAX],datos[7][MAX];
char *ptr;
int i;
fp=fopen("passwd","r");
while (fgets(buf,MAX,fp)!=NULL) {
ptr=strtok(buf,":\n");
for(i=0;ptr;ptr=strtok(NULL,":\n"),i++)
strcpy(datos[i],ptr);
if (i<7) printf("No encontr
e todos los datos!\n");
printf("login: %s\npasswd: %s\nuser: %s\ngroup: %s\nname: %s\nhome: %s\nshell: %s\n%s\n",
datos[0],datos[1],datos[2],datos[3],
datos[4],datos[5],datos[6],SEP);
}
fclose(fp);
return 0;
}
Con el archivo:
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
Jorge Baier Aranda, PUC
Contenedores en STL
Un contenedor objeto que permite almacenar otros objetos.
Existen contenedores basados en estructuras de datos conocidas.
Pueden almacenar distintos tipos de datos pues estan definidos como templates.
Estos son los contenedores definidos en STL:
Cabecera
Contenedor
<vector>
<list>
<deque>
<queue>
<stack>
<map>
<set>
<bitset>
arreglo unidimensional de T
lista doblemente ligada de T
cola de doble extremo de T
cola de T
pila de T
arreglo asociativo de T
conjunto de T
arreglo de bits T
10
Vectores
Los vectores son muy similares a los arreglos. De hecho, se permite acceder a la
enesima posici
on a traves de A[n].
Agregar elementos al final de un vector es muy eficiente (O(1)) pero eliminar o
agregar elementos en otra parte toma en general tiempo O(n), con n el n
umero
de elementos en el vector.
Las siguientes estan dentro de los metodos mas u
tiles de la clase vector:
M
etodo
Efecto/Retorno
begin()
end()
push_back(valor)
pop_back(variable)
insert(iterador,valor )
erase(iterador)
size()
empty()
[]
11
12
13
14
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main() {
string s,s2;
int n;
ifstream f;
istream *p;
// comentar siguientes l
neas para leer de entrada est
andar
f.open("hola.txt");
if (f.fail()) {
perror("no se puede abrir el archivo");
exit(1);
}
p = &f;
//p = &cin;
// descomentar para leer de la entrada est
andar
while (1) {
*p >> s; *p >> n;
if (p->fail()) break;
cout <<"!"<< s << "!" << n << "!" << endl;
}
f.close();
return 0;
}
15
16
17
Proceso("JORGE"),
Proceso("INIT",6), Proceso("Swapper",16),
Proceso("LPD",8) , Proceso("HTTPD",8) };
18
Swapper
Prioridad: 16
LPD
Prioridad: 8
HTTPD Prioridad: 8
INIT
Prioridad: 6
JORGE Prioridad: 0
19
Algoritmos
La STL provee una gran cantidad de algoritmos predefinidos cuando se incluye la
cabecera <numeric>.
Destacan los siguientes (generalmente usados en deques, listas y vectores):
Funci
on
Descripci
on
find()
replace_if()
reverse()
random_shuffle()
sort()
stable_sort()
binary_search()
generate()
unique()
lower_bound()
upper_bound()
merge()
20