gpt4 book ai didi

c - K&R Chapter 1 - Exercise 22 解法,你怎么看?

转载 作者:太空狗 更新时间:2023-10-29 16:49:03 29 4
gpt4 key购买 nike

我是从 k&r 学习 C 作为第一语言,我只是想问一下,如果你认为这个练习的解决方式是正确的,我知道它可能没有你想要的那么完整,但我想要 View ,所以我知道我正在正确地学习 C。

谢谢

/* Exercise 1-22. Write a program to "fold" long input lines into two or
* more shorter lines, after the last non-blank character that occurs
* before then n-th column of input. Make sure your program does something
* intelligent with very long lines, and if there are no blanks or tabs
* before the specified column.
*
* ~svr
*
* [NOTE: Unfinished, but functional in a generic capacity]
* Todo:
* Handling of spaceless lines
* Handling of lines consisting entirely of whitespace
*/

#include <stdio.h>
#define FOLD 25
#define MAX 200
#define NEWLINE '\n'
#define BLANK ' '
#define DELIM 5
#define TAB '\t'

int
main(void)
{
int line = 0,
space = 0,
newls = 0,
i = 0,
c = 0,
j = 0;

char array[MAX] = {0};

while((c = getchar()) != EOF) {
++line;
if(c == NEWLINE)
++newls;
if((FOLD - line) < DELIM) {
if(c == BLANK) {
if(newls > 0) {
c = BLANK;
newls = 0;
}
else
c = NEWLINE;
line = 0;
}
}
array[i++] = c;
}
for(line = 0; line < i; line++) {
if(array[0] == NEWLINE)
;
else
printf("%c", array[line]);
}
return 0;
}

最佳答案

我相信您的方向是正确的,但有一些可读性方面的建议:

  • 评论你的东西
  • 正确命名变量,如果您拒绝,至少给出描述
  • 因此,一些单行如果你使用,一些你不使用。 (恕我直言,始终使用 {} 以提高可读性)
  • 最后一个for循环中的if语句可以更好,比如

if(array[0] != NEWLINE)
{
printf("%c", array[line]);
}

关于c - K&R Chapter 1 - Exercise 22 解法,你怎么看?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/736759/

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