La magia está en la palabra clave static
que conserva el contenido de la memoria de la cadena, incluso después de que termine la función. (Se puede considerar que se extiende el alcance de la variable.)
Este código tiene un carácter cada vez, a continuación, los concatena en una cadena y lo guarda en un archivo:
#include <stdio.h>
#include <conio.h>
char* strbsmallah()
{
static char input[50];
char position =0, letter;
scanf("%c",&letter);
while (letter != '~') { // press '~' to end your text
input [position]=letter;
++position;
scanf("%c",&letter);
}
input[position]='\0';
char *y;
y = (char*) &input;
//printf("%s\n ",y);
return y;
}
int main() {
printf("\n");
FILE *fp;
fp = fopen("bsmallah.txt", "w+");
fprintf(fp, strbsmallah());
while (!_kbhit());
return 0;
}
'main' deben volver un 'int', no ifs, ands, o peros. ¿Qué es exactamente lo que espera que le pase a esta cadena? (Aunque la "cadena" es realmente una constante de caracteres, ya que utiliza delimitadores ''' en lugar de' "') –
¿Error al copiar exactamente el mensaje de error? ¿Qué esperaba exactamente que ocurriera? –
Falta un punto y coma después de la declaración de devolución, es probable que sea el error. Volver '' sss'' de 'main' funcionará técnicamente (ya que es un' int'), pero definitivamente no es lo que se desea. –