サンプルプログラム

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
研修生

サンプルプログラム

#1

投稿記事 by 研修生 » 16年前

#include <stdio.h>
#define MAXLINE 100
int getline(char line[/url], int maxline);
void copy(char to[/url], char from[/url]); 

int main(int argc, char* argv[/url])
{
	int len;
	int max;
	char line[MAXLINE];
	char longest[MAXLINE];

	max = 0;
	while((len = getline(line, MAXLINE))> 0){
		if(len > max){
			max = len;
			copy(longest, line);
		}
	}

	if(max > 0){
		printf("%s", longest);
	}
	
	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;
}

void copy(char to[/url], char from[/url])
{
	int i;
	i=0;
	while((to = from) != '\0'){
		++i;
	}
}


このサンプルプログラムは一群の行を読み込んで一番長い行をプリントするプログラムとのことですが
何が行なわれているのかさっぱりです。実行してみてもずっと入力で、何もでてきません・・
説明していただける人いませんか?

Mist

Re:サンプルプログラム

#2

投稿記事 by Mist » 16年前

> 実行してみてもずっと入力で、何もでてきません・・

「Ctrl+C」か「Cntl+Z エンター」すればgetlineが-1を返すから終了しますよ。

初級者

Re:サンプルプログラム

#3

投稿記事 by 初級者 » 16年前

Ctrl+C
は有無をいわせず強制終了するので、
思い通りの結果を得ることが
できないのではないでしょうか。

Mist

Re:サンプルプログラム

#4

投稿記事 by Mist » 16年前

ん~、私の環境だとCtrl+Cでも正常に動作しますね。(WinXP SP3 + BCC)
たまたまでしょうか?

Kou

Re:サンプルプログラム

#5

投稿記事 by Kou » 16年前

getchar()はCtrl+SでEOF、つまり-1を返したと思います。
最近使用していない関数なので曖昧ですが・・・

※上記Ctrl+SはCtrl+Zの間違いでした。お詫びして訂正します。

研修生

Re:サンプルプログラム

#6

投稿記事 by 研修生 » 16年前

報告忘れていました。Ctrl+Zでできました。ありがとうございました。

初級者

Re:サンプルプログラム

#7

投稿記事 by 初級者 » 16年前

Ctrl+C
でOKでした。
失礼いたしました。

閉鎖

“C言語何でも質問掲示板” へ戻る