estoy usando una macro y creo que funciona bien -macroaplicaciones 'retorno' un valor
#define CStrNullLastNL(str) {char* nl=strrchr(str,'\n'); if(nl){*nl=0;}}
Así funciona a cero fuera de la última nueva línea en una cadena, realmente su usado para cortar el linebreak cuando lo dejan los fgets.
Por lo tanto, me pregunto si puedo "retorno" un valor de la macro, por lo que puede ser llamado como
func(CStrNullLastNL(cstr)) ;
O voy a tener que escribir una función
No tiene que escribir ninguna - simplemente use 'strtok (str," \ n ")'. Si bien no es para lo que 'strtok()' se diseñó realmente, hace el trabajo perfectamente (de hecho, es uno de los pocos usos útiles para 'strtok()'). En C++, simplemente debes usar 'std :: getline()' en lugar de 'fgets()'. –
¿Qué quieres que regrese? – slacker
@Jerry Coffin: ¿Eso no reemplazaría la PRIMERA línea nueva en lugar de la última? –