Sei sulla pagina 1di 33

stdlib.

h
Esta livraria responsvel pela incluso de funes de caracter muito diverso: alocao de memria, converso ascii para inteiro e vice-versa, ascii para float, nmeros aleatrios, etc. Funes disponibilizadas por esta livraria:

abort atof bsearch ecvt fcvt gcvt labs _lrotl ltoa max mbstowcs qsort randomize _rotr srand _strtold system wcstombs

abs atoi calloc exit free getenv ldiv _lrotr _makepath mblen min rand realloc _searchenv strtod strtoul ultoa

atexit atol div _exit _fullpath itoa lfind lsearch malloc mbtowc putenv random _rotl _splitpath strtol swab wctomb

Dada a sua pouca utilizao algumas destas funes no sero descritas em pormenor neste guia. Os alunos interessados na sua descrio podero consultar as ajudas do Turbo C ou man do Gnu C.

53

abort
Termina anormalmente um programa.

#include <stdlib.h>, #include <process.h>

void abort(void); retorno: argumentos:


Obs : Uma vez chamada a funo abort( ) envia a seguinte mensagem para o stderr (Abnormal program termination) e termina a execuo do programa atravs da chamada da funo exit( ) com cdigo de sada numero 3. DOS Sim UNIX Sim WINDOWS Sim ANSI C Sim

Ver tambm : _exit, assert, atexit, exit, raise, ignal, pawn. Exemplo #include <stdio.h> #include <stdlib.h> int main(void) { printf("Chamando)\n"); abort(); return 0; /* Esta instruo nunca alcanada */ }

abs

#include <stdlib.h>, #include <math.h>

Determina o valor absoluto de um numero inteiro .

int abs(int a); retorno: valor absoluto de a. argumentos: inteiro sinalizado


Obs : DOS Sim UNIX Sim WINDOWS Sim ANSI C Sim

Ver tambm : fabs, labs, fabsl.

54

Exemplo #include <stdio.h> #include <math.h> int main(void) { int number = -1234; printf("nmero: %d valor absoluto: %d\n", number, abs(number)); return 0; }

atexit
Consultar ajuda do Turbo C ou man GNUC.

#include <stdlib.h>

atof

#include <stdlib.h>, #include <math.h>

Converte uma string num valor real (float) de preciso dupla .

double atof(const char *s); retorno: valor convertido em caso de sucesso. Ou erro no caso da string no poder ser
convertida 0.

argumentos: ponteiro para string.


Obs : O primeiro caracter no conversvel interrompe a converso. DOS Sim UNIX Sim WINDOWS Sim ANSI C Sim

Ver tambm : atoi, atol, ecvt, fcvt, gcvt, scanf, strtod. Exemplo #include <stdlib.h> #include <stdio.h> int main(void) { float f; char *str = "12345.67"; f = atof(str); printf("string = %s float = %f\n", str, f); return 0; }

55

atoi
Macro que converte uma string num valor inteiro .

#include <stdlib.h>

int atoi(const char *s); retorno: valor convertido em caso de suc esso. Ou erro no caso da string no poder ser
convertida 0.

argumentos: ponteiro para string.


Obs : O primeiro caracter no conversvel interrompe a converso. necessrio cuidado nas situaes de overflow. DOS Sim UNIX Sim WINDOWS Sim ANSI C Sim

Ver tambm : atof, atol, ecvt, fcvt, gcvt, scanf, strtod. Exemplo #include <stdlib.h> #include <stdio.h> int main(void) { int n; char *str = "12345.67"; n = atoi(str); printf("string = %s integer = %d\n", str, n); /*a partir do 5 truncado devido ao caracter . */ return 0; }

atol
Macro que converte uma string num valor inteiro longo.

#include <stdlib.h>

long int atoi(const char *s); retorno: valor convertido em caso de sucesso. Ou erro no caso da string no poder ser
convertida 0.

argumentos: ponteiro para string.


Obs : O primeiro caracter no conversvel interrompe a converso. necessrio cuidado nas situaes de overflow.

56

DOS Sim

UNIX Sim

WINDOWS Sim

ANSI C Sim

Ver tambm : atof, atoi, ecvt, fcvt, gcvt, scanf, strtod, strtol, strtoul. Exemplo #include <stdlib.h> #include <stdio.h> int main(void) { long l; char *lstr = "98765432"; l = atol(lstr); printf("string = %s integer = %ld\n", lstr, l); return(0); }

bsearch
Funo que realiza pesquisa binria.

#include <stdlib.h>

void *bsearch(const void *key, const void *base, size_t nelem, size_t width, int (*fcmp)(const void*, const void*)); retorno: ponteiro para o primeiro elemento encontrado e 0 no caso de erro. argumentos:
base fcmp Primeiro endereo do vector funo definida pelo programador que devolve resultado da comparao entre os dois elementos key Elemento a encontrar nelem Numero de elemento no vector. width Numero de bytes de cada elemento. . Obs : Efectua uma pesquisa binria do valor k e y no vector base de nelem elementos.

DOS Sim

UNIX Sim

WINDOWS

ANSI C Sim

Ver tambm : lsearch, lfind.

Exemplo

57

#include <stdlib.h> #include <stdio.h> typedef int (*fptr)(const void*, const void*); #define NELEMS(arr) (sizeof(arr) / sizeof(arr[0])) /* complicado ?? mande -me um mail rlam@ualg.pt */ int numarray[] = {123, 145, 512, 627, 800, 933}; int numeric (const int *p1, const int *p2){ return(*p1 - *p2); } #pragma argsused /* directiva para compilao */ int lookup(int key){ int *itemptr; /* The cast of (int(*)(const void *,const void*)) is needed to avoid a type mismatch error at compile time */ itemptr = (in t *) bsearch (&key, numarray, NELEMS(numarray), sizeof(int), (fptr)numeric); return (itemptr != NULL); } int main(void){ if (lookup(512)) printf("512 is in the table.\n"); else printf("512 isn't in the table.\n"); return 0; }

calloc

#include <stdlib.h>, #include<alloc.h>

Aloca dinamicamente blocos de memria, no heap, para utilizao no programa.

void *calloc(size_t nitems, size_t size); retorno: ponteiro para o primeiro endereo do bloco de memria alocado em caso de erro (no
existir memria para alocar devolve um ponteiro NULL..

argumentos:
nitems nmero de elementos size tamanho em bytes de cada elemento. .

58

Obs : Calloc aloca s permite 64 K de memria, para se alocar mais, deve-se utilizar o faralloc( ). No caso de se utilizar o MSDOS deve-se ter em conta o modelo de memria utilizado SMALL ou LARGE.

DOS Sim

UNIX Sim

WINDOWS

ANSI C Sim

Ver tambm : free, malloc, realloc, faralloc. Exemplo #include <stdio.h> #include <alloc.h> #include <string.h> int main(void) { char str = NULL; / ponteeiro para NULL*/ /* aloca memria para a string */ str = (char *) calloc(10, sizeof(char)); /* copia "Hello" em string */ strcpy(str, "Hello"); /* mostra string */ printf("String is %s\n", str); /* liberta memoria SEMPRE CONVENIENTE EFECTAR A LIBERTAO */ free(str); /* neste ponto para onde aponta str ??? */ return 0; }

div
Divide dois valores inteiros.

#include <stdlib.h>

div_t div(int numer, int denom); retorno: estrutura com o valor do quociente e do resto. argumentos:
numer numerador denom denominador.

59

. Obs :

DOS Sim Ver tambm : ldiv. Exemplo #include <stdlib.h> #include <stdio.h>

UNIX

WINDOWS

ANSI C Sim

div_t x; /* aconselho a ver o tipo de estrutura na ajuda do Turbo C */ int main(void) { x = div(10,3); printf("10 div 3 = %d e resta %d\n", x.quot, x.rem); return 0; }

ecvt
Converte um float numa string.

#include <stdlib.h>

char *ecvt(double value, int ndig, int *dec, int *sign); retorno: parte inteira convertida em string. argumentos:
value ndig dec sign Obs : valor a converter. numero de digitos devoluo parte decimal devoluo do sinal -/+ de value.

DOS Sim

UNIX Sim

WINDOWS

ANSI C

Ver tambm : gcvt, fcvt. Exemplo

60

#include <stdlib.h> #include <stdio.h> #include <conio.h> int main(void) { char *string; double value; int dec, sign; int ndig = 10; clrscr(); value = 9.876; string = ecvt(value, ndig, &dec, &sign); printf("string = %s dec = %d sign = %d\n", string, dec, sign); value = -123.45; ndig= 15; string = ecvt(value,ndig,&dec,&sign); printf("string = %s dec = %d sign = %d\n", string, dec, sign); value = 0.6789e5; /* anotao cientifica */ ndig = 5; string = ecvt(value,ndig,&dec,&sign); printf("string = %s dec = %d sign = %d\n", string, dec, sign); return 0; }

exit

#include <stdlib.h>, #include <process.h>

Permite o abandono do processo, programa onde evocado.

void exit( int status); retorno: argumentos:


status inteiro a ser devolvido ao processo que evocou o processo que termina, ou ao sistema operativo.

Obs : Normalmente 0 indica a no ocorrncia de erro e no zero a ocorrncia de algum tipo de erro (ver ajudas). Ao sair a funo exit( ) fecha todos buffers, escreve o que estava em linha de espera nos bufferes e evoca qualquer funo declarada atravs de atexit( ).

DOS Sim

UNIX Sim

WINDOWS

ANSI C

61

Ver tambm : abort, atexit, _c_exit, _dos_keep, exec..., _exit, keep, signal, spawn. Exemplo #include <stdlib.h> #include <conio.h> #include <stdio.h> int main(void) { int status; printf("Digite 1 ou 2\n"); status = getch(); /* Sets DOS errorlevel */ exit(status - '0'); /* Nota: esta linha nunca ha-de ser atingida */ return 0; }

_exit
Permite o abandono do processo, programa onde evocado.

#include <stdlib.h>

void _exit( int status); retorno: argumentos:


status inteiro a ser devolvido ao processo que evocou o processo que termina, ou ao sistema operativo.

Obs : Normalmente 0 indica a no ocorrncia de erro e no zero a ocorrncia de algum tipo de erro (ver ajudas). Ao sair a funo _exit( ) no fecha ficheiros, buffers, nem escreve o que estava em linha de espera nos bufferes, nem evoca qualquer funo declarada atravs de atexit( ).

DOS Sim

UNIX Sim

WINDOWS

ANSI C

Ver tambm : abort, atexit, _c_exit, _dos_keep, exec..., _exit, keep, signal, spawn. Exemplo #include <stdlib.h>

62

#include <stdio.h> void done(void); int main(void) { atexit(done); _exit(0); return 0; } void done() { printf("Ol \n"); }

fcvt

#include <stdlib.h>

Converte um float numa string. A diferena entre a funo ecvt( ) e esta est no modo em como efectuado o arredondamento da parte decimal para o numero de dgitos pretendidos.

char *fcvt(double value, int ndig, int *dec, int *sign); retorno: parte inteira convertida em string. argumentos:
value ndig dec sign Obs : valor a converter. numero de digitos devoluo parte decimal devoluo do sinal -/+ de value.

DOS Sim

UNIX Sim

WINDOWS

ANSI C

Ver tambm : gcvt, fcvt. Exemplo #include <stdlib.h> #include <stdio.h> int main(void) { char *str; double num; int dec, sign, ndig = 5;

63

/* numero normal */ num = 9.876; str = fcvt(num, ndig, &dec, &sign); printf("string = %10s parte decimal = %d sinal = %d\n", str, dec, sign); /* numero negativo */ num = -123.45; str = fcvt(num, ndig, &dec, &sign); printf("string = %10s parte decimal = %d sinal = %d\n", str, dec, sign); /* anotao cientifica */ num = 0.678e5; str = fcvt(num, ndig, &dec, &sign); printf("string = %10s parte decimal= %d sinal = %d\n", str, dec, sign); return 0; }

free

#include <stdlib.h>, #include<alloc.h>

Liberta a memria alocada pelas funes calloc( ), malloc( ) ou realloc( ).

void free(void *block); retorno: argumentos:


block ponteiro para bloco de memria a libertar.

Obs : Ateno ao modelos de memria. Aconselha-se estudo mais profundo sobre a alocao dinmica de memria (mas antes no se esqueam de estudar/rever os ponteiros) .

DOS Sim

UNIX Sim

WINDOWS

ANSI C

Ver tambm : calloc, farcalloc, farmalloc, freemem, malloc, realloc, strdup . Exemplo #include <string.h> #include <stdio.h> #include <alloc.h> int main(void) { char *str;

64

/* aloca memria para string */ str = (char *) malloc(10); /* copia "Hello" para a string */ strcpy(str, "Hello"); /* mostra string */ printf("String is %s\n", str); /* liberta memria */ free(str); return 0; }

_fullpath
Converte o caminho (path) relativo em caminho absoluto. Ver ajudas do Turbo C

#include <stdlib.h>

DOS Sim

UNIX

WINDOWS

ANSI C

gcvt
Converte real numa string.

#include <stdlib.h>, #include<alloc.h>

char *gcvt(double value, int ndec, char *buf); retorno: ponteiro para string convertida argumentos:
value ndec buf Obs : DOS Sim UNIX Sim WINDOWS ANSI C valor a converter numero de dgitos significativos a converter ponteiro para string buf de armazenamento da converso

Ver tambm : ecvt, fcvt, sprintf. Exemplo #include <stdlib.h> #include <stdio.h>

65

int main(void) { char str[25]; double num; int sig = 5; /* digitos significativos*/ /* numero real */ num = 9.876; gcvt(num, sig, str); printf("string = %s\n", str); /* real negativo */ num = -123.4567; gcvt(num, sig, str); printf("string = %s\n", str); /* anotao cientifica */ num = 0.678e5; gcvt(num, sig, str); printf("string = %s\n", str); return(0); }

getenv
Obtm o valor de determinada varivel de ambiente.

#include <stdlib.h>

char *getenv(const char *name);

retorno: valor da varivel de ambiente. No caso de erro ponteiro NULL. argumentos:


name nome da varivel de ambiente

Obs : O nome da varivel de ambiente pode ser em maisculas ou minsculas. DOS Sim UNIX Sim WINDOWS ANSI C

Ver tambm : putenv, environ, getpsp. Exemplo #include <stdio.h> #include <stdlib.h> #include <alloc.h> #include <string.h> #include <dos.h>

66

int main(void) { char *path, *ptr; int i = 0; /* obtem o path corrente */ ptr = getenv("PATH"); /* estabelece um novo path */ path = (char *) malloc(strlen(ptr)+15); strcpy(path,"PATH="); strcat(path,ptr); strcat(path,";c:\\temp"); /* substitui o path corrente e mostra as variveis de ambiente */ putenv(path); while (environ[i]) printf("%s\n",environ[i++]); return 0; }

itoa
Converte um valor inteiro em string.

#include <stdlib.h>

char *itoa(int value, char *string, int radix); retorno: ponteiro para varivel string que receba valor convertido. argumentos:
value string radix valor a converter ponteiro para buffer de string. valor da base em que se considera o valor.

Obs : no caso de ser um valor negativo e o radix ser 10 itoa coloca um sinal de menos no inicio da string. DOS Sim UNIX WINDOWS ANSI C

Ver tambm : ltoa, ultoa. Exemplo #include <stdlib.h> #include <stdio.h>

67

int main(void) { int number = 12345; char string[25]; itoa(number, string, 10); printf("inteiro = %d string = %s\n", number, string); return 0; }

labs
Calcula o valor absoluto de um inteiro longo.

#include <stdlib.h>

long int labs(long int x); retorno: valor absoluto. argumentos:


x Obs : . DOS Sim Ver tambm : Exemplo #include <stdio.h> #include <math.h> int main(void) { long result; long x = -12345678L; result= labs(x); printf("number: %ld abs value: %ld\n", x, result); return 0; } UNIX Sim WINDOWS Sim ANSI C valor inteiro longo

ldiv 68

#include <stdlib.h>

Efectua a diviso de longos (inteiros).

ldiv_t ldiv(long int numero, long int denominador); retorno: estrutura com o quociente e resto da diviso. argumentos:
numero valor inteiro longo denominador valor inteiro longo Obs : DOS Sim Ver tambm : div. Exemplo #include <stdlib.h> #include <stdio.h> int main(void) { ldiv_t lx; lx = ldiv(100000L, 30000L); printf("100000 div 30000 = %ld com resto %ld\n", lx.quot, lx.rem); return 0; } UNIX WINDOWS Sim ANSI C Sim

lfind
Efectua uma pesquisa linear sobre um vector.

#include <stdlib.h>

void *lfind(const void *key, const void *base, size_t *num, size_t width, int (*fcmp)(const void *, const void*)); retorno: Null no caso de no encontrar o elemento e no caso de sucesso ponteiro para o
elemento.

argumentos:
ver bsearch, lsearch Obs : DOS Sim UNIX Sim WINDOWS Sim ANSI C

69

Ver tambm : bsearch, lsearch, qsort. Exemplo #include <stdio.h> #include <stdlib.h> int compare(int *x, int *y) { return( *x - *y ); } int main(void) { int array[5] = {35, 87, 46, 99, 12}; size_t nelem = 5; int key; int *result; key = 99; result = (int *) lfind(&key, array, &nelem, sizeof(int), (int(*)(const void *,const void *))compare); if (result) printf("Numero %d encontrado \n",key); else printf("Numero %d desconhecido \n",key); return 0; }

_lrotl, _lrotr
Efectua deslocamento de um inteiro longo para a esquerda/direita.

#include <stdlib.h>

unsigned long _lrotl(unsigned long val, int count); unsigned long _lrotr(unsigned long val, int count); retorno: val deslocado (shift) count bits para esquerda ou direita. argumentos:
val count long numero de bits a deslocar

Obs : desloca count bits para a esquerda. DOS Sim UNIX WINDOWS Sim ANSI C

Ver tambm : _rotl, _rotr.

70

Exemplo #include <stdlib.h> #include <stdio.h> /* function prototypes */ int lrotl_example(void); int lrotr_example(void); /* lrotl example */ int lrotl_example(void) { unsigned long result; unsigned long value = 100; result = _lrotl(value,1); printf("The value %lu rotated left one bit is: %lu\n", value, result); return 0; } /* lrotr example */ int lrotr_example(void) { unsigned long result; unsigned long value = 100; result = _lrotr(value,1); printf("The value %lu rotated right one bit is: %lu\n", value, result); return 0; } int main(void) { lrotl_example(); lrotr_example(); return 0; }

lsearch
Funo que realiza pesquisa linear.

#include <stdlib.h>

void *lsearch(const void *key, void *base, size_t *num, size_t width, int (*fcmp)(const void *, const void *)); retorno: ponteiro para o primeiro elemento encontrado.

71

argumentos:
base fcmp Primeiro endereo do vector funo definida pelo programador que devolve resultado da comparao entre os dois elementos key Elemento a encontrar nelem Numero de elemento no vector. width Numero de bytes de cada elemento. . Obs : Efectua uma pesquisa binria do valor k e y no vector base de nelem elementos, no caso de no encontrar adiciona a chave ao vector.

DOS Sim

UNIX Sim

WINDOWS

ANSI C Sim

Ver tambm : lsearch, lfind. Exemplo #include <stdlib.h> #include <stdio.h> #include <string.h>

/* para utilizao da funo strcmp */

/* inicializa o numero de cores */ char *colors[10] = { "Red", "Blue", "Green" }; int ncolors = 3; int colorscmp(char **arg1, char **arg2) { return(strcmp(*arg1, *arg2)); } int addelem(char *key) { int oldn = ncolors; lsearch(key, colors, (size_t *)&ncolors, sizeof(char *), (int(*)(const void *,const void *))colorscmp); return(ncolors == oldn); } int main(void) { int i; char *key = "Purple"; if (addelem(key)) printf("%s j existe na tabela de cores\n", key); else { strcpy(colors[ncolors-1],key);

72

printf("%s adicionada tabela de cores\n", key); } printf("As cores so:\n"); for (i = 0; i < ncolors; i++) printf("%s\n", colors[i]); return 0; }

ltoa
Converte um inteiro longo para uma string.

#include <stdlib.h>

char *ltoa(long value, char *string, int radix); retorno: ponteiro para varivel string que receba valor convertido. Ou NULL em caso de erro. argumentos:
value string radix valor a converter ponteiro para buffer de string. valor da base em que se considera o valor.

Obs : no caso de ser um valor negativo e o radix ser 10 itoa coloca um sinal de menos no inicio da string. DOS Sim UNIX WINDOWS Sim ANSI C

Ver tambm : atoi, atol, ecvt, fcvt, gcvt, scanf, strtod. Exemplo #include <stdlib.h> #include <stdio.h> int main(void) { char string[25]; long value = 123456789L; ltoa(value,string,10); printf("numero = %ld string = %s\n", value, string); return 0; }

_lmakepath
Ver ajudas do Turbo C.

#include <stdlib.h>

73

malloc
Efectua alocao de bloco de memria disponvel no Heap.

#include <stdlib.h>

void *malloc(size_t size); retorno: ponteiro para inicio da rea de memria reservada. Em caso de erro devolve ponteiro
NULL.

argumentos:
size tamanho do bloco de memria em bytes.

Obs : Ver a utilizao de sizeof( ). DOS Sim UNIX Sim WINDOWS Sim ANSI C

Ver tambm : alloca, allocmem, calloc, coreleft, farcalloc, farmalloc, free, realloc. Exemplo #include <stdio.h> #include <string.h> #include <alloc.h> #include <process.h> int main(void) { char *str; /* aloca 10 bytes de memria */ if ((str = (char *) malloc(10)) == NULL) { printf("No existe memria suficiente para alocar\n"); exit(1); /* termina o programa */ } /* copia "Hello" para a string */ strcpy(str, "Hello"); /* mostra string */ printf("String is %s\n", str); /* liberta memria */ free(str); return 0; }

74

max
Ver ajudas do Turbo C.

#include <stdlib.h>

mblen
Ver ajudas do Turbo C.

#include <stdlib.h>

mbtowc
Ver ajudas do Turbo C.

#include <stdlib.h>

mbtowcs
Ver ajudas do Turbo C.

#include <stdlib.h>

min
Ver ajudas do Turbo C.

#include <stdlib.h>

putenv
Substitui a string das variveis de ambiente.

#include <stdlib.h>

int putenv(const char *name); retorno: No caso de sucesso devolve 0, em caso de erro devolve 1. argumentos:
name Obs : DOS Sim UNIX Sim WINDOW S Sim ANSI C Sim string contendo as novas variveis de ambiente.

Ver tambm : getenv. Exemplo Ver exemplo da funo getenv( ).

qsort
Efectua a ordenao de um vector utilizando o algoritmo qsort.

#include <stdlib.h>

75

void qsort(void *base, size_t nelem, size_t width, int (*fcmp )(const void *, const void *)); retorno: No caso de sucesso devolve 0, em caso de erro devolve 1. argumentos:
base fcmp Primeiro endereo do vector funo definida pelo programador que devolve resultado da comparao entre os dois elementos key Elemento a encontrar nelem Numero de elemento no vector. width Numero de bytes de cada elemento. Obs : DOS Sim Ver tambm : Exemplo #include <stdio.h> #include <stdlib.h> #include <string.h> int sort_function( const void *a, const void *b); char list[5][4] = { "cat", "car", "cab", "cap", "can" }; int main(void) { int x; qsort((void *)list, 5, sizeof(list[0]), sort_function); for (x = 0; x < 5; x++) printf("%s\n", list[x]); return 0; } int sort_function( const void *a, const void *b) { return( strcmp((char *)a,(char *)b) ); } UNIX Sim WINDOWS Sim ANSI C Sim

rand
Gera um pseudo numero aleatrio

#include <stdlib.h>

76

int rand(void); retorno: Devolve o numero pseudo aleatrio . argumentos:


Obs : Devolve um numero pseudo aleatrio entre 0 e MAX_RAND. DOS Sim UNIX Sim WINDOWS Sim ANSI C Sim

Ver tambm : randomize, srand. Exemplo #include <stdlib.h> #include <stdio.h> int main(void) { int i; printf("Dez numeros entre 0 e 99\n\n"); for(i=0; i<10; i++) printf("%d\n", rand() % 100); return 0; }

random
funo que devolve numero aleatrio

#include <stdlib.h>

int random(int num); retorno: Devolve o numero aleatrio . argumentos:


Obs : Devolve um numero pseudo aleatrio entre 0 e num -1. DOS Sim UNIX WINDOWS Sim ANSI C

Ver tambm : rand, randomize, srand. Exemplo #include <stdlib.h>

77

#include <stdio.h> #include <time.h> /* mostra um numero entre 0 e 99 */ int main(void) { randomize(); printf("numero aleatrio entre 0 e 99: %d\n", random (100)); return 0; }

randomize

#include <stdlib.h>, #include<time.h>

Macro que inicializa o gerador de numeros aleatrios.

void randomize(void); retorno: argumentos:


Obs : Utiliza uma funo definida em time.h. DOS Sim UNIX WINDOWS Sim ANSI C

Ver tambm : rand, randomize, srand. Exemplo #include <stdlib.h> #include <stdio.h> #include <time.h> int main(void) { int i; randomize(); printf("Dez numeros entre 0 e 99\n\n"); for(i=0; i<10; i++) printf("%d\n", rand() % 100); return 0; }

realloc
Realloc realoca bloco de memria numa nova posio.

#include <stdlib.h >

78

*realloc(void *block, size_t size); retorno: Ponteiro para o bloco de memria alocado. Em caso de erro devolve um ponteiro
NULL.

argumentos:
block size ponteiro para o bloco de memria previamente alocado tamanho do novo bloco de memria

Obs : ajusta o bloco de memria ao novo tamanho size e copia o contedo para a nova posio de memria.. DOS Sim UNIX Sim WINDOW S Sim ANSI C Sim

Ver tambm : faralloc( ) nas ajudas. Exemplo #include <stdio.h> #include <alloc.h> #include <string.h> int main(void) { char *str; /* Aloca 10 bytes */ str = (char *) malloc(10); /* copia "Hello" para dentro de string */ strcpy(str, "Hello"); printf("String %s\n e o endereo %p \n", str, str); str = (char *) realloc(str, 20); printf("String %s\n e o novo endereo %p \n", str, str); /* libertao da memria*/ free(str); return 0; }

_rotl, _rotr
_rotl desloca um inteiro n bits para a esquerda. _rotr desloca um inteiro n bits para a direita. Ver as _lrotl( ) e _lrotr( ).

#include <stdlib.h>

79

_searchenv
Procura um ficheiro em determinado caminho de pesquisa path .

#include <stdlib.h >

_splitpath
Decompe o caminho de pesquisa (path ) nos seus componentes.

#include <stdlib.h >

srand
Funo que inicializa o gerador de nmeros aleatrios.

#include <stdlib.h >

void srand(unsigned seed); retorno: argumentos:


seed numero inteiro que serve de semente para o gerador. Obs : Normalmente utiliza-se o relgio do sistema para semente do gerador. DOS Sim UNIX Sim WINDOWS Sim ANSI C Sim

Ver tambm : Exemplo #include <stdlib.h> #include <stdio.h> #include <time.h> int main(void) { int i; time_t t; srand((unsigned) time(&t)); printf("Dez nmeros aleatrios entre 0 e 99\n\n"); for(i=0; i<10; i++) printf("%d\n", rand() % 100); return 0; }

strtod
Converte uma string num real de dupla preciso, double.

#include <stdlib.h >

80

double strtod(const char *s, char **endptr); retorno: valor convertido ou no caso de overflow devolve plus, minus HUGE_VAL. argumentos:
Obs DOS Sim UNIX Sim WINDOWS Sim ANSI C Sim

Ver tambm : endptr argument, radix argument, atof, atol. Exemplo #include <stdio.h> #include <stdlib.h> int main(void) { char input[80], *endptr; double value; printf("Digie um valor real:"); gets(input); value = strtod(input, &endptr); printf("A string %s e o nmero %lf\n", input, value); return 0; }

strtol
Converte uma string num inteiro longo.

#include <stdlib.h >

long strtol(const char *s, char **endptr, int radix); retorno: valor convertido ou no caso de erro zero. argumentos:
Obs : DOS Sim UNIX WINDOWS Sim ANSI C Sim

Ver tambm : endptr argument, radix argument, atof, atol. Exemplo

81

#include <stdlib.h> #include <stdio.h> int main(void) { char *string = "87654321", *endptr; long lnumber; /* strtol converte a string em long */ lnumber = strtol(string, &endptr, 10); printf("string = %s long = %ld\n", string, lnumber); return 0; } _ strtold Converte uma string num longo real .

#include <stdlib.h >

long double _strtold(const char *(s), char **(endptr)); retorno: valor convertido ou no caso de overflow devolve plus, minus HUGE_VAL. argumentos:
Obs : DOS Sim UNIX WINDOWS Sim ANSI C Sim

Ver tambm : endptr argument, radix argument, atof, atol. Exemplo Ver funo strtod( ).

strtoul
Converte uma string num longo no sinalizado.

#include <stdlib.h >

unsigned long strtoul(const char *s, char **endptr, int radix); retorno: valor convertido ou no caso de erro zero. argumentos:
Obs :

82

DOS Sim

UNIX

WINDOW S Sim

ANSI C Sim

Ver tambm : endptr argument, radix argument, atof, atol. Exemplo #include <stdlib.h> #include <stdio.h> int main(void) { char *string = "87654321", *endptr; unsigned long lnumber; lnumber = strtoul(string, &endptr, 10); printf("string = %s long = %lu\n", string, lnumber); return 0; }

swab
Troca nbytesdo endereo from para to.

#include <stdlib.h >

void swab(char *from, char *to, int nbytes); retorno: argumentos:


from to nbytes ponteiro para endereo de origem ponteiro para endereo de destino numeros de bytes a trocar.

Obs : Optimo para manter trocar a ordem do bytes na converso Little Indian / Big Indian (???) DOS Sim Ver tambm : Exemplo #include <stdlib.h> #include <stdio.h> #include <string.h> char source[15] = "rFna koBlrna d"; UNIX sim WINDOWS ANSI C Sim

83

char target[15]; int main(void) { swab(source, target, strlen(source)); printf("This is target: %s\n", target); return 0; }

system
Executa um comando do sistema operativo.

#include <stdlib.h >

int system(const char *command); retorno: Em caso de sucesso 0. No caso de erro devolve 1 e coloca errno a ENOENT,
ENOMEM, E2BIG, or ENOEXEC.

argumentos:
command string com comando a executar Obs : Optimo para manter trocar a ordem do bytes na converso Little Indian / Big Indian (???) DOS Sim UNIX sim WINDOWS ANSI C Sim

Ver tambm : exec, spawn. Exemplo #include <stdlib.h> #include <stdio.h> int main(void) { printf("About to spawn command in terpreter and run a DOS command\n"); system("dir"); return 0; }

ultoa
Converte um inteiro longo no sinalizado para uma string.

#include <stdlib.h>

char *ultoa(unsigned long value, char *string, int radix); retorno: ponteiro para varivel string que receba valor convertido. Ou NULL em caso de erro.

84

argumentos:
value string radix valor a converter ponteiro para buffer de string. valor da base em que se considera o valor.

Obs : no caso de ser um valor negativo e o radix ser 10 itoa coloca um sinal de menos no inicio da string. DOS Sim UNIX WINDOWS Sim ANSI C

Ver tambm : atoi, atol, ecvt, fcvt, gcvt, scanf, strtod. Exemplo #include <stdlib.h> #include <stdio.h> int main( void ) { unsigned long lnumber = 3123456789L; char string[25]; ultoa(lnumber,string,10); printf("string = %s unsigned long = %lu\n",string,lnumber); return 0; }

wctomb
Converte um array do tipo wchar_t em numa string multi-bytes. Ver ajudas.

#include <stdlib.h>

wcstombs
Converte codigo do tipo wchar_t num caracter multibyte. Ver ajudas.

#include <stdlib.h>

85

Potrebbero piacerti anche