Home > OS >  No output generated from C function returning char*
No output generated from C function returning char*

Time:10-16

I am quite new to C so my apologies if this is a straight forward problem but I cannot seem to find my error. My code is as follows

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char* makeString(char character,int count)
{
    int i;
    char* finalString=malloc(count 1);
    for(i=1;i<=count;i  )
    {
        finalString[i]=character;
    }
    finalString[count]=0;
    return finalString;
}
int main()
{
    char* string=makeString('*',5);
    printf("%s\n",string);
}

I am trying to get an output of the finalString which would be 'character', 'count' number of times. I am not getting any errors or warnings but It is not generating any output. When debugging it runs the loop successfully but does not ever store any character into finalString. Any help appreciated.

CodePudding user response:

As with many programming languages, C uses 0-based indices for arrays. The first element of the character array at finalString is finalString[0], not finalString[1].

Your for loop should go from 0 to count - 1, instead of from 1 to count. The line:

for(i = 1; i <= count; i  )

should instead be:

for(i = 0; i < count; i  )

As your code is now, you have undefined behaviour, because you try to print finalString[0], which is uninitialized. In this case, it seems to be 0 ('\0').


I've ignored the fact that makeString is missing its closing }, since you say this compiles correctly, I assume that's a pasting error.

CodePudding user response:

Arrays in C begin at 0, i.e. the 1st element is finalString[0].

Since you do not set it, it contains garbage, and most probably a NUL which ends the string immediately.

Your loop should look like

for(i=0;i<count;i  )
...

and so on.

  • Related