#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void teste(char texto[10]) {
strcpy(texto
, "Ponteiro"); //isto não é seguro, mas sabemos que funciona neste caso }
char *teste2() {
if (texto
!= NULL
) strcpy(texto
, "Ponteiro"); //neste caso dá para eliminar isto, deixai porque o normal é fazer assim return texto;
}
int main () {
char texto[10];
teste(texto);
printf("\nRESULTADO: %s\n", texto
); //segunda forma não recomendada
char *texto2 = teste2();
if (texto2 != NULL) {
printf("\nRESULTADO: %s\n", texto2
); free(texto2
); //tem que librar a memória que foi alocada por outra função }
}
//https://pt.stackoverflow.com/q/252163/101
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPHN0cmluZy5oPgoKdm9pZCB0ZXN0ZShjaGFyIHRleHRvWzEwXSkgewogICAgc3RyY3B5KHRleHRvLCAiUG9udGVpcm8iKTsgLy9pc3RvIG7Do28gw6kgc2VndXJvLCBtYXMgc2FiZW1vcyBxdWUgZnVuY2lvbmEgbmVzdGUgY2Fzbwp9CgpjaGFyICp0ZXN0ZTIoKSB7CgljaGFyICp0ZXh0byA9IG1hbGxvYygxMCk7CiAgICBpZiAodGV4dG8gIT0gTlVMTCkgc3RyY3B5KHRleHRvLCAiUG9udGVpcm8iKTsgLy9uZXN0ZSBjYXNvIGTDoSBwYXJhIGVsaW1pbmFyIGlzdG8sIGRlaXhhaSBwb3JxdWUgbyBub3JtYWwgw6kgZmF6ZXIgYXNzaW0KICAgIHJldHVybiB0ZXh0bzsKfQoKaW50IG1haW4gKCkgewoJY2hhciB0ZXh0b1sxMF07Cgl0ZXN0ZSh0ZXh0byk7CiAgICBwcmludGYoIlxuUkVTVUxUQURPOiAlc1xuIiwgdGV4dG8pOwogICAgLy9zZWd1bmRhIGZvcm1hIG7Do28gcmVjb21lbmRhZGEKICAgIGNoYXIgKnRleHRvMiA9IHRlc3RlMigpOwogICAgaWYgKHRleHRvMiAhPSBOVUxMKSB7CiAgICAgICAgcHJpbnRmKCJcblJFU1VMVEFETzogJXNcbiIsIHRleHRvMik7CiAgICAgICAgZnJlZSh0ZXh0bzIpOyAvL3RlbSBxdWUgbGlicmFyIGEgbWVtw7NyaWEgcXVlIGZvaSBhbG9jYWRhIHBvciBvdXRyYSBmdW7Dp8OjbwogICAgfQp9CgovL2h0dHBzOi8vcHQuc3RhY2tvdmVyZmxvdy5jb20vcS8yNTIxNjMvMTAx