Newsgroup: it.comp.lang.c
Titolo: funzione che ritorna un array

buongiorno a tutti
stavo pensando ad una funzione che ritorna una substringa di un
array, qualcosa tipo:
substr(<array ingresso>,<posizione>,<lunghezza>)
la domanda è: può una funzione ritornare un' array? e se si, come
si dichiara il prototipo?
Inoltre, dato che non mi sembra il caso di reinventare la ruota,
qualcuno sa indicarmi (in internet) dove trovare delle funzioni
standard tipo (appunto) substr, trim eccetera?
grazie a chi ha la pazienza di rispondere
S.
--  
Postato da Virgilio Newsgroup: scopri i nuovi gruppi 
Eros, foto e video a 
http://newsgroup.eros.virgilio.it

 si dichiara il prototipo?
puoi far restituire un puntatore a una zona di memoria 
allocata dinamicamente:
#include <stdio.h>
char* substr(char *s, int pos, int len) {
    char *out;
    out=(char*)malloc(len+1);
    memcpy(out,s+pos,len);
    out[len]='\0';
    return out;
}
int main(int argc, char **argv) {
    char *s="1234567890";
    char *out;
    out=substr(s,1,5);
    printf("%s\n",out);
    free(out);
    return 0;
}
 > Inoltre, dato che non mi sembra il caso di reinventare la 
ruota,
 > qualcuno sa indicarmi (in internet) dove trovare delle 
funzioni
 > standard tipo (appunto) substr, trim eccetera?
un link a caso:
http://www.utas.edu.au/infosys/info/documentation/C/CStdLib.html
ciao.

 
http://www.utas.edu.au/infosys/info/documentation/C/CStdLib.html
Ciao,
 oppure anche:
man strstr
strstr - locate a substring
 Ciao
 Federico

    out=(char*)malloc(len+1);
Via il cast: out=malloc(len+1);

cane ha scritto:

grazie, mi sono chiarito diverse cose
ciao - S.


Andrea Laforgia ha scritto:

Perchè via il cast?

Perchč via il cast?
Perché sě.  Lo si č detto milioni di volte.  Leggi i vecchi messaggi.

 wrote in message
43f3392a$0$12605$4faf...@reader3.news.tin.it...

Perchè è sostanzialmente inutile in C, se però usi un compilatore C++
potrebbe richiedertelo (in quanto in questo caso è necessario) e non
compilarti un bel niente ;-)
Bye Dave

[...]Perchč č sostanzialmente inutile in C, se perņ usi un compilatore C++
Solo se COMPILI del codice C++, non se USI un compilatore C++.
Qualsiasi compilatore C++ si puņ usare per compilare del codice C (non
inteso come subset C del C++, ma proprio come C standard) e in quel
caso il cast non č richiesto, č inutile e potenzialmente dannoso.

 caso il cast non è richiesto, è inutile e potenzialmente dannoso.
Utilizzando un compilatore C++ con ide, solitamente, l ' estensione
assegnata al
sorgente di default è  CPP in questo caso devi necessariamente castare, o
comunque vedere se vi è una opzione nel compilatore per evitare l' errore,
utilizzando a primo colpo un compilatore C++ qualcuno potrebbe rimanere
spiazzato, e pensare che quà siamo pazzi affermando cha il cast non è
necessario se non addirittura dannoso... effettivamente sarebbe stato piu
preciso dire: " se però usi un compilatore C++ senza le giuste opzioni
settate..., anche perchè ormai i vari compilatori tendono ad essere
piuttosto C++ che solo C...
Bye Dave.

 addirittura dannoso... 
Certo se qualcuno vuole scrivere codice C, ma non ha idea di quello che
sta facendo forse e` il caso che ripensi l'approccio.
Luca
-- 
Home: 
http://kronoz.cjb.net
"In linea di principio sarei indifferente al natale, se solo il natale
 ricambiasse la cortesia e mi lasciasse in pace." -- Marco d'Itri

piuttosto C++ che solo C...
I vari compilatori in giro traducono sia il C++ che il C.  AFAIK, non
c'è una, che sia una, implementazione che tratti il primo in modo
esclusivo.  D'altronde, per un produttore di compilatori C++ non
sarebbe affatto intelligente non supportare il C.