【初心者歓迎】C/C++室 Ver.29【環境依存OK】
レス数が900を超えています。1000を超えると表示できなくなるよ。
0900デフォルトの名無しさん
2006/08/17(木) 00:05:07メールデーモンからstdin経由で次のようなメッセージがわたってくるのですが、これをなんとかメモリ上に格納して
加工したいというのが趣旨です。一行の文字数がよくわからないので
行・列ともに動的にメモリを確保したいのですが、なかなかうまくいきません
入力値はこんな感じです。
可変の文字数(横)x 可変の行数(縦)
最初は一行の横の長さをfgetcで改行文字までの文字数をカウントして
同じ行を、その長さ分mallocしたポインタに格納してfgetsすればいいだろう・・と思ってたのですが、
fgetcする時点でstdinの現在位置が変わってしまうようで、続けてfgetsすると次の行をgetしてきてしまいます。
rewindとかfseekしてstdinの位置がファイルのように戻るかなと思ったのですがだめでした。
こういう場合は、リストで横と縦を作ったほうがいいのでしょうか?
#include <stdio.h>
#include <stdlib.h>
int main(){
int i = 0;
char ch;
char *line_p;
/* 一行の長さを数える */
while(ch = fgetc(stdin)){
i++;
if(ch == '\n'){
break;
}
printf("%c",ch);
}
printf("%i",i);
/* 一行の文字数をmallocで確保してその行をポインタの先に格納する。*/
line_p = malloc(i+1);
fgets(line_p,i+1,stdin);
printf("%s",line_p);
return (0);
}
レス数が900を超えています。1000を超えると表示できなくなるよ。