永发信息网

c语言程序设计中第四章的程序 while (--lim > 0 && (c=getchar()) != EOF && c!= '\n&apos

答案:2  悬赏:70  手机版
解决时间 2021-02-27 09:59
  • 提问者网友:饥饿走向夜
  • 2021-02-26 15:51
c语言程序设计中第四章的程序 while (--lim > 0 && (c=getchar()) != EOF && c!= '\n')

第四章:函数与程序结构

4.1

#include

#define MAXLINE 1000





int getlines(char line[],int max);

int strindex(char source[],char searchfor[]);

char pattern[] = "ould";



main()

{

char line[MAXLINE];

int found = 0;

while (getlines(line,MAXLINE) >0)

if (strindex (line,pattern)>=0){

printf("%s",line);

found++;

}

return found;

}



int getlines (char s[],int lim)

{

int c,i;

i=0;

while (--lim > 0 && (c=getchar()) != EOF && c!= '\n')

s[i++] = c;

if (c == '\n')

s[i++] = c;

s[i] = '\0';

return i;

}



int strindex( char s[], char t[])

{

int i,j,k;

for (i = 0;s[i] != '\0';i++){

for (j=i,k=0;t[k] !='\0' && s[j]==t[k];j++,k++)

;

if (k > 0 && t[k] == '\0')

return i;

}

return -1;

}

while (--lim > 0 && (c=getchar()) != EOF && c!= '\n')
这一句的 --lim > 0
是怎么来的?
最佳答案
  • 五星知识达人网友:不想翻身的咸鱼
  • 2021-02-26 16:28
while (--lim > 0 && (c=getchar()) != EOF && c!= '\n')
这一句的 --lim > 0 // 这个是最大长度呀。这里是#define MAXLINE 1000

--lim > 0 // 对读取的总长度进行限制,以免访问数组越界。
(c=getchar()) != EOF // 是否读取到文件末尾,文件读完毕,即使没有读到最大长度也结束了。
c!= '\n') // 是否是换行,读取到换行也意味着结束。
全部回答
  • 1楼网友:舊物识亽
  • 2021-02-26 17:06
第一,你要输出字符,至少也应该改成printf("%c",c); %d是以有符号十进制数显示表列中对应的信息 第二,c=putchar()!=eof的话根据运算符优先级,可知,!=优先级大于=,所以原式等效于c=(putchar()!=eof),显然其意完全不同,判断putchar函数的返回值是否为eof,也就是说表达式putchar()!=eof的值,不是1就是0,也就是说c的值只会是0或1(lz说的那个笑脸的字符的ascii值就是1) 第三,eof是一个宏,其值一般是-1,详细的自行百度eof词条
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯