тебе реально проще заново переписать функцию, т.к. при твоем "переводе" всё, после строчки "begin" теряют смысл.
если в С++
char sf1[100];sprintf(sf1,"%s.txt",filename);
объявляет переменную sf1 и присваивает ей значение <filename>.txt
то твоя
write(sf1,"%s.txt",filename);
делает ваще не пойми...