Malloc: woher weiß ich denn wieviel Speicher ich brauche/reservieren muss?
-
'0' ist etwas anderes als '\0'.
-
Du schreibst len-1 Datensätze ala len-1 Byte, die ab 'ch' beginnen, also insgesamt len^2-2*len+1 Byte, von denen nur die ersten len Byte sinnvoll sind. Versuchs's mal mit:
fwrite(ch,strlen(ch)/*sizeof(char) kannst du weglassen*/,1,file1);
(oder mit fputs())