读取字符串如何借助EOF结束输入(C语言问题)?
/*11-11-08-08-14.02.c--第十一章第十一题*/#include<stdio.h>#include<string.h>#defineLIM10#defi...
/* 11-11-08-08-14.02.c -- 第十一章第十一题 */
#include <stdio.h>
#include <string.h>
#define LIM 10
#define LINELIM 81
#define SPACE ' '
void show_menu (void) ;
void pri_ini (const char (* str_arr)[LINELIM], int count) ;
void arr_ansii (char * * str, int count) ;
void arr_lenth (char * * str, int count) ;
void arr_space (char * * str, int count) ;
int main (void)
{
char str_arr[LIM][LINELIM] ;
char * pst[LIM] ;
char ch ;
int i ;
puts ("输入10个字符串,每个回车符结束1个字符串输入.") ;
fputs ("请输入第[1]个字符串:", stdout) ;
for (i = 0; i < LIM; i++)
{
gets (str_arr[i]) ;
pst[i] = str_arr[i] ;
if (i != 9)
printf ("请输入第[%d]个字符串:", i + 2) ;
}
puts ("已完成字符串录入!") ;
show_menu () ;
....................................................略...........................................................
我想问下.如何在输入EOF的时候结束输入.
我使用过if (str_arr[i][0] == EOF)判断.但是不好使.
如果在输入字符串前用getchar ()检测,又会少读取一个字符.
书上说EOF要和getchar ()配合使用.说真的书上的东西我不怎么信
我刚学C不久,上面的代码基本体现了我的全部能力.
在这段代码的基础上,如何能够实现在输入EOF的时候结束循环?
请大侠赐教. 展开
#include <stdio.h>
#include <string.h>
#define LIM 10
#define LINELIM 81
#define SPACE ' '
void show_menu (void) ;
void pri_ini (const char (* str_arr)[LINELIM], int count) ;
void arr_ansii (char * * str, int count) ;
void arr_lenth (char * * str, int count) ;
void arr_space (char * * str, int count) ;
int main (void)
{
char str_arr[LIM][LINELIM] ;
char * pst[LIM] ;
char ch ;
int i ;
puts ("输入10个字符串,每个回车符结束1个字符串输入.") ;
fputs ("请输入第[1]个字符串:", stdout) ;
for (i = 0; i < LIM; i++)
{
gets (str_arr[i]) ;
pst[i] = str_arr[i] ;
if (i != 9)
printf ("请输入第[%d]个字符串:", i + 2) ;
}
puts ("已完成字符串录入!") ;
show_menu () ;
....................................................略...........................................................
我想问下.如何在输入EOF的时候结束输入.
我使用过if (str_arr[i][0] == EOF)判断.但是不好使.
如果在输入字符串前用getchar ()检测,又会少读取一个字符.
书上说EOF要和getchar ()配合使用.说真的书上的东西我不怎么信
我刚学C不久,上面的代码基本体现了我的全部能力.
在这段代码的基础上,如何能够实现在输入EOF的时候结束循环?
请大侠赐教. 展开
3个回答
展开全部
......
if (gets (str_arr[i]) == NULL)
{
break;
}
......
man gets
......
RETURN VALUE
fgetc(), getc() and getchar() return the character read as an unsigned char cast to an int
or EOF on end of file or error.
gets() and fgets() return s on success, and NULL on error or when end of file occurs while
no characters have been read.
ungetc() returns c on success, or EOF on error.
if (gets (str_arr[i]) == NULL)
{
break;
}
......
man gets
......
RETURN VALUE
fgetc(), getc() and getchar() return the character read as an unsigned char cast to an int
or EOF on end of file or error.
gets() and fgets() return s on success, and NULL on error or when end of file occurs while
no characters have been read.
ungetc() returns c on success, or EOF on error.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
试试
for (i = 0; i < LIM; i++)
{
for(j = 0; j < LINELIM;j++)
{
str_arr[i][j] == getchar();
if(str_arr[i][j] == '\n')
break;
}
pst[i] = str_arr[i] ;
if (i != 9)
printf ("请输入第[%d]个字符串:", i + 2) ;
}
for (i = 0; i < LIM; i++)
{
for(j = 0; j < LINELIM;j++)
{
str_arr[i][j] == getchar();
if(str_arr[i][j] == '\n')
break;
}
pst[i] = str_arr[i] ;
if (i != 9)
printf ("请输入第[%d]个字符串:", i + 2) ;
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询