0
Why is my function not returning a value?
https://code.sololearn.com/c2aCps3Ye556/?ref=app Ive tried using pointers in my functions (call by reference) instead of calling by value but every time i try something out, it just doesnt work. Here in my code, ive tried returning a pointer from a function and then dereferencing it when calling it. Is it ok to do so? My program wont print anything and would actually generate a runtime error. But i cant seem to understand why that is the case. Kindly helpđ Thanks!!
4 Answers
0
Here's what I found:
1) You accidentally closed the main function with an extra }
2) when you use strcat() the first argument should be a string variable
3) I don't know why &inp[0] was used, just inp would've made more sense
4) *bracket_by_len() was not needed because the return type is a char array
+ 1
thanks alot jtrh and Bebida Roja That did indeed solve the problem.
I was making the mistake of storing the string "word" in a constant which is not possible.
@jtrh Thanks also for pointing out the other errors in my program. However, i do want to point out here that since my function returns a pointer, is it ok for me to simply write
return temp;
or do i have to create a seperate pointer for temp and then return it
0
the first argument to strcat cannot be a constant, as the concatenation is stored in that address.
0
This works if you wanna give special brackets to the end of the string with a certain length
#include <stdio.h>
#include <string.h>
char *bracket_by_len
( char *word, int size)
{
char temp[20000];
  if (size<5)
  {
strcpy(temp,"<<");
    strcat(temp,word);
    strcat(temp,">>");
  }
  else if (size>5 && size<10)
  {
    strcpy(temp,"(*");
    strcat(temp,word);
    strcat(temp,"*)");
  }
  else
  {
    strcpy(temp,"/+");
    strcat(temp,word);
    strcat(temp,"+/");
  }
  return temp ;
}
int main()
{
  char inp[30];
  printf("Enter a word: ");
  scanf("%s",inp);
  printf("%s",bracket_by_len(inp,strlen(inp)));
return 0;
}