gpt4 book ai didi

字符数组 c k&r 第 1-17 本书

转载 作者:太空宇宙 更新时间:2023-11-04 02:12:31 25 4
gpt4 key购买 nike

我正在研究 K&R,我试图编写一个程序来打印出所有大于 80 个字符的输入行。一旦我从终端自行运行该程序,我将一无所获。谁能告诉我哪里出错了?还有一个我不确定的部分是行 s[i] = '\0'; - 有人可以向我解释一下这是做什么的吗?

#include <stdio.h>
#define MAXLINE 1000
#define LENGTH 80

int get_line(char line[], int maxline);

/* program to print all lines longer than 80 characters */
main()
{
int len; /*current line length*/
char line[MAXLINE]; /*current input line*/

while((len = get_line(line, MAXLINE)) > 0) /*while length of the line is greater than zero*/
if (len > LENGTH) { /*if the length is greater than 80*/
printf("%s", line); /*print that line*/
return 0;
}
}

/* getline: read a line into s, return length */
int get_line(char s[], int lim)
{
int c, i;

for (i=0; i<lim-1 && (c=getchar())!=EOF && c!='\n'; ++i) /*if i is < 1000 & input is = EOF & input is != newline add one*/
s[i] = c; /*assign a value to each character*/
if (c == '\n') {
s[i] = c;
++i;
}
s[i] = '\0'; /*unsure what '\0' does*/
return i; /*return the length*/
}

最佳答案

我在您的代码中看到的唯一问题是它在打印第一行后立即停止,它发现长度超过 80 个字符。

如果你移动

return 0;

在 if 语句之外,它将打印所有超过 80 个字符的行,而不仅仅是第一行。

你的“主要”方法将是

main()
{
int len; /*current line length*/
char line[MAXLINE]; /*current input line*/

while((len = get_line(line, MAXLINE)) > 0) /*while length of the line is greater than zero*/
if (len > LENGTH) /*if the length is greater than 80*/
printf("%s", line); /*print that line*/

return 0;
}

正如其他人所指出的,'\0' 字符是 C 字符串终止符。

关于字符数组 c k&r 第 1-17 本书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12098878/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com