K&R 演習2-2 解答 (プログラミング言語C 第2版)

スポンサーリンク

鍛錬 301

K&R 演習2-2 解答 (プログラミング言語C 第2版)

上記の for ループに等価なループを,&&あるいは || を使用しないで書け。

B.W.カーニハン D.M.リッチー 石田晴久 訳 『プログラミング言語C 第2版 ANSI 規格準拠』, (共立出版, 2017), pp.52.

スポンサーリンク

プログラム

以下は、&& あるいは || を使用せずに、入力された文字列を印字するプログラム、kr_2_2.c です。

// include
#include <stdio.h>

// preprocessor
#define MAXLINE 1000  // 入力可能な文字数の最大値

// main
int main(void)
{
	char s[MAXLINE];
	char c;
	int lim;
	int i_tmp;
	int i;
	
	lim = MAXLINE;
	
	for (i = 0; i < lim - 1; ++i) {
		if ((c = getchar()) != '\n') {
			if (c != EOF)
				s[i] = c;
			else {
				i_tmp = i;
				i = lim;
			}
		}
		else {
			i_tmp = i;
			i = lim;
		}
	}
	if (c == '\n') {
		s[i_tmp] = c;
		++i_tmp;
	}
	s[i_tmp] = '\0';
	printf("%s\n", s);
	
	return 0;
}
スポンサーリンク

実行結果

以下は、プログラム kr_2_2.c を実行して、入力された文字列を印字しています。

***@ubuntu:~/***/test/c$ 
***@ubuntu:~/***/test/c$ gcc -Wall -Wextra kr_2_2.c -o kr_2_2
***@ubuntu:~/***/test/c$ ./kr_2_2
Hello, World.
Hello, World.
タイトルとURLをコピーしました