文字列を折りたたむ
Posted: 2009年5月12日(火) 12:16
長い入力行を入力のn字目にある最後の非ブランク文字の後で折りたたむプログラムを作っています。
イメージとしては文字列のn字目に改行をいれて分ける という風だと考えまして
としたところうまくいきません。というのも改行が埋め込めていないようでして・・
3文字目に折りたたむとしてabcdefgと打ち込むと希望としては
abc
defg
なのですが
abcnefgと出力されてしまいます。
s[n] + '\n'の所がちゃんとできていないんだとおもいます。
どうすればうまくいきますか?
イメージとしては文字列のn字目に改行をいれて分ける という風だと考えまして
int main()
{
int c, n, len;
char s[1000];
printf("何文字目で折りたたみますか?");
scanf("%d", &n);
for(int i = 0; i< (c = getchar()) != EOF; ++i){
s = c;
len = getline(s,1000);
if(len > n){
s[n] += '\n';
printf("%s\n", s);
}
else{
printf("NG");
}
}
return 0;
}
int getline(char s[/url], int lim)//文字列の文字数を数える
{
int c, i;
for(i = 0; i < lim -1 && (c = getchar()) != EOF && c != '\n'; ++i){
s = c;
}
if(c == '\n'){
s = c;
++i;
}
s = '\0';
return i;
}としたところうまくいきません。というのも改行が埋め込めていないようでして・・
3文字目に折りたたむとしてabcdefgと打ち込むと希望としては
abc
defg
なのですが
abcnefgと出力されてしまいます。
s[n] + '\n'の所がちゃんとできていないんだとおもいます。
どうすればうまくいきますか?