Code:
void w(char* c, int i)
{
char * t;
sprintf(t, "%d", i);
perror(c);
perror(t);
}
int main(void)
{
w("qwe", 5);
return 0;
}
causes segmentation fault, but
int main(void)
{
perror("qwdasda");
w("qwe", 5);
}
works. Why?
My question does not meet your quality standards.
Here is your segmentation fault:
In this code,
tis input tosprintf(). However,tis uninitialized sosprintf()will scribble on your memory. It is almost never advisable to usesprintf(), usesnprintf()instead: