その前に、fgets の解説。
char * fgets(char * s, int n, FILE*stream)は、stream から入力を受取り、文字数が n に達するか、改行を読み込むか、EOF(File の終わり)に達するまで 文字を s で指される配列に取り込むというものです。
void swap(int i, int j) {
int t;
t = i; i = j; j = t;
}
int main(int argc, char *argv[]) {
int i = 10;
int j = 20;
swap(i, j);
printf("%d %d\n", i, j);
}
int i = 10;
void f(int i) {
i = i + 10;
printf("%d\n", i);
}
int main(int argc, char *argv[]) {
f(i);
printf("%d\n", i);
}
int i = 10;
void f(void) {
i = i + 10;
printf("%d\n", i);
}
int main(int argc, char *argv[]) {
f();
printf("%d\n", i);
}
int f(int n) {
if (n <= 0)
return 0;
else
return f(n-1)+n*n;
}
int main(int argc, char *argv[]) {
printf("%d\n", f(3));
}
double f(double x) {
return x*x;
}
char *s; char *t = "Kobe"; strcpy(s, t);
char *readline() {
char buffer[1000];
if (fgets(buffer, 1000, stdin) == NULL)
return NULL;
return buffer;
}
int main(int argc, char *argv[]) {
char *line1, *line2;
char buffer[1000];
line1 = fgets(buffer, 1000, stdin);
line2 = fgets(buffer, 1000, stdin);
fputs(line1, stdout);
fputs(line2, stdout);
}
ただし入力は以下の2行で,エラーは起らないとする.
abcd efg
int main(int argc, char *argv[]) {
char *line1, *line2;
line1 = malloc(1000);
line2 = malloc(1000);
fgets(line1, 1000, stdin);
fgets(line2, 1000, stdin);
fputs(line1, stdout);
fputs(line2, stdout);
}
ただし入力は以下の2行で,エラーは起らないとする.
abcd efg
typedef struct person PERSON;
struct person {
char *name;
int age;
};
PERSON *g(PERSON *p) {
p->age += 10;
return p;
}
int main(int argc, char *argv[]) {
PERSON me, *p;
me.name = "Taro";
me.age = 20;
p = g(&me);
printf("%d %d\n", me.age, p->age);
}
2002.10.22/ Tomio KAMADA: kamada@cs.kobe-u.ac.jp