C 有没有办法使这段代码简洁?
我目前正在学习和练习c,但我正在做的练习希望每个函数有25行限制(不更改{}或使用单行if语句!) 如果有什么办法可以让这个更短,请帮忙C 有没有办法使这段代码简洁?,c,C,我目前正在学习和练习c,但我正在做的练习希望每个函数有25行限制(不更改{}或使用单行if语句!) 如果有什么办法可以让这个更短,请帮忙 void ft_write_file(void) { char c; int fd; int i; i = 0; if ((fd = open("write_exam", O_WRONLY | O_TRUNC | O_CREAT, 00777)) == -1) { ft
void ft_write_file(void)
{
char c;
int fd;
int i;
i = 0;
if ((fd = open("write_exam", O_WRONLY | O_TRUNC | O_CREAT, 00777)) == -1)
{
ft_putstr("map error");
return ;
}
while (read(0, &c, 1))
{
write(fd, &c, 1);
if (c == '\n')
break ;
ft_allocate_g_var(i, c, 0);
i++;
}
int j = 0;
while (j < g_line)
{
while (read(0, &c, 1))
{
write(fd, &c, 1);
if (c == '\n')
break ;
}
j++;
}
close(fd);
}
void ft\u write\u文件(void)
{
字符c;
int-fd;
int i;
i=0;
如果((fd=open(“write_-exam”,O_-WRONLY | O_-TRUNC | O_-CREAT,00777))=-1)
{
ft_putstr(“映射错误”);
回来
}
while(读(0,&c,1))
{
写入(fd和c,1);
如果(c=='\n')
打破
ft_分配g_var(i,c,0);
i++;
}
int j=0;
而(j
一种简单的方法是在一行中声明顶部的所有变量,例如:
字符c;int-fd;int i;i=0
除此之外,我不知道,希望它能帮助一点,至少 首先,不要试图在一个函数中做两件事。试着用合理的参数编写函数,而不是硬编码它们的主题 例如,您的函数实际上在做两件事:
/*错误时返回fd或-1*/
int open_输出(常量字符*名称);
/*返回复制的字节数或错误时返回-1*/
ssize\u t copy\u fd(int fd\u dest,int fd\u source);
那么你的司机可能是:
ssize\u t copy\u stdin\u to\u file(const char*name)
{
int fd=打开输出(名称);
如果(fd<0)
{
ft_putstr(“无法打开输出文件”);
返回-1;
}
ssize_t copied=copy_fd(fd,0);
如果(复制<0){
ft_putstr(“无法写入数据”);
返回复印件;
}
}
注意while(读取(0,&c,1))
是错误的。(read()可以返回-1)在c中,基本上你可以在一行上写所有的东西(除了少数例外),这是一种不好的做法,但是如果你只需要很少的行数,你可以在一行上写多个“行”;int i;i=0代码>进入intfd,i=0代码>。短语“每个要拥有的函数”强烈建议您可能希望将此函数分为多个函数——您能找出此函数与您将创建和调用的新函数之间的逻辑责任划分吗?@wildplasser我是否仔细检查了-1?阅读的正确形式是什么?