对于我的一个练习,我们需要逐行阅读并使用ONLY getchar和printf输出。我跟随K& R,其中一个例子显示使用了getchar和putchar。根据我的阅读,getchar()一次读取一个char,直到EOF。我想要做的是一次读取一个字符,直到行结束,但存储写入char变量的任何内容。因此,如果输入Hello,World!,它也会将它全部存储在变量中。我试过使用strstr和strcat但没有成功。
while ((c = getchar()) != EOF)
{
printf ("%c", c);
}
return 0;
答案 0 :(得分:4)
您需要多个字符来存储一行。使用例如一系列字符,如下:
#define MAX_LINE 256
char line[MAX_LINE];
int line_length = 0;
//loop until getchar() returns eof
//check that we don't exceed the line array , - 1 to make room
//for the nul terminator
while ((c = getchar()) != EOF && line_length < MAX_LINE - 1) {
line[line_length] = c;
line_length++;
//the above 2 lines could be combined more idiomatically as:
// line[line_length++] = c;
}
//terminate the array, so it can be used as a string
line[line_length] = 0;
printf("%s\n",line);
return 0;
使用此功能,您无法读取长度超过固定大小的行(在本例中为255)。 K&amp; R将在以后教你动态分配的内存,你可以用来读取任意长行。