文字列
Posted: 2009年8月11日(火) 08:07
こんにちは。
C言語は初心者です。コンパイラはBorland C++を使っています。
次のプログラムは一文字ずつ表示して一文字ずつ消去していくプログラムです。
「あいうえお」と入力したところ、一文字ずつ表示され、一文字ずつ消えていきました。
入力した文字列はそれぞれ2バイトずつ取り、全部で11バイトですよね。
そこで質問なのですが、
入力された「あ」はchar[0]とchar[1]に入りますよね?
for (i = 0; i < strnum; i++) {
putchar(str);
fflush(stdout);
sleep(500);
}
ここで、char[0]が強制的に出力されますよね。でも、char[0]だけなのに、どうして、実行したときには
「あ」が表示されたのですか?
よろしくお願いします。
C言語は初心者です。コンパイラはBorland C++を使っています。
次のプログラムは一文字ずつ表示して一文字ずつ消去していくプログラムです。
「あいうえお」と入力したところ、一文字ずつ表示され、一文字ずつ消えていきました。
入力した文字列はそれぞれ2バイトずつ取り、全部で11バイトですよね。
そこで質問なのですが、
入力された「あ」はchar[0]とchar[1]に入りますよね?
for (i = 0; i < strnum; i++) {
putchar(str);
fflush(stdout);
sleep(500);
}
ここで、char[0]が強制的に出力されますよね。でも、char[0]だけなのに、どうして、実行したときには
「あ」が表示されたのですか?
よろしくお願いします。
#include <stdio.h> #include <time.h> #include <string.h> int sleep(unsigned long x); void main() { int i; char str[100]; int strnum; printf("文字列を入力してください:"); gets(str); strnum = strlen(str); printf("%d\n", strnum); while (1) { for (i = 0; i < strnum; i++) { putchar(str); fflush(stdout); sleep(500); } for (i = 0; i < strnum; i++) { printf("\b \b"); fflush(stdout); sleep(500); } } } int sleep(unsigned long x) { clock_t c1 = clock(), c2; do { if ((c2 = clock()) == (clock_t)-1) { return (0); } } while (1000.0 * (c2 - c1) / CLOCKS_PER_SEC < x); return (1); }