Returning a string [char pointer] from a function

nocturne picture nocturne · Nov 6, 2014 · Viewed 17.2k times · Source

I am writing a program that returns a string from stdin, but i am getting warning that it returns an adress of local wariable. How can i return the string?

thanks in advance

#include <stdio.h>
char* readLine()
{
   int i;
   char input[1024];

   for(i=0;i<1024;i++)
   {
     input[i]=fgetc(stdin);
     if(input[i]=='\n')
      {
         break;
      }
   }
   return input;
}

int main()
{
    printf("%s",readLine());
    return 0;
}

Answer

Rizier123 picture Rizier123 · Nov 6, 2014

This should work for you:

You can pass input from main as reference:

#include <stdio.h>

char * readLine(char * input, int length) {

    int i;

    for(i = 0; i < length; i++) {
        input[i] = fgetc(stdin);

    input[length] = '\0';

     if(input[i] == '\n')
         break;
   }

   return input;
}

int main() {

    int length = 1024;
    char input[length+1];


    printf("%s", readLine(input, length));

    return 0;

}