shoukai関数の30-33行目を以下のようにすることで解決しました。

if(str[len-1] == 0x0a){
str[len-1] = '\0';
if(str[len-2] == 0x0d){
str[len-2] = '\0';
}
puts("ahoaho");
}

ttp://www9.plala.or.jp/sgwr-t/c/sec17.html
こちらのページに0x0dと0x0aについての記述があり
0x0d 0x0aは>>339氏の指摘どうり
0x0aに変換されると思っていたんですが
cygwinでは違うのでしょうか。