Perhaps you should clarify "it doesn't work", which doesn't actually tell us anything useful.
Does it compile?
Does it crash always, or only on specific inputs?
Does it produce garbage answers?
sNetName = _strdup(temp->spCon[k]->strNetName[m]);
sPinName = _strdup(temp->spCon[k]->strPinName[m]);
fprintf(fpout, "%s %s ",sNetName, sPinName);
Why do you make copies of the strings, just to print them?
Do you free those copies immediately afterwards?
To debug a crash effectively, we really need the whole code and the input data. Random snippets of "I think this line of code is the problem" are both useless and wrong.
Almost certainly, the real problem is somewhere else in the code, and your 'guess' just happens to be where those seeds of destruction finally germinate.
I'd suggest you first check your array indices are within bounds, and then check back that you allocated enough memory at each instance.