小编Wil*_*ell的帖子

为什么"while(!feof(file))"总是错的?

我看到人们最近在很多帖子中试图读取这样的文件.

#include <stdio.h>
#include <stdlib.h>

int
main(int argc, char **argv)
{
    char *path = argc > 1 ? argv[1] : "input.txt";

    FILE *fp = fopen(path, "r");
    if( fp == NULL ) {
        perror(path);
        return EXIT_FAILURE;
    }

    while( !feof(fp) ) {  /* THIS IS WRONG */
        /* Read and process data from file… */
    }
    if( fclose(fp) == 0 ) {
        return EXIT_SUCCESS;
    } else {
        perror(path);
        return EXIT_FAILURE;
    }
}
Run Code Online (Sandbox Code Playgroud)

这个__CODE__循环有什么问题?

c file while-loop feof

550
推荐指数
4
解决办法
21万
查看次数

将InputStream转换为BufferedReader

我正在尝试使用Android中assets目录中的InputStream逐行读取文本文件.

我想将InputStream转换为BufferedReader以便能够使用readLine().

我有以下代码:

InputStream is;
is = myContext.getAssets().open ("file.txt");
BufferedReader br = new BufferedReader (is);
Run Code Online (Sandbox Code Playgroud)

第三行删除以下错误:

Multiple markers at this line
The constructor BufferedReader (InputStream) is undefinded.

我在C中尝试做的事情如下:

StreamReader file;
file = File.OpenText ("file.txt");

line = file.ReadLine();
line = file.ReadLine();
...
Run Code Online (Sandbox Code Playgroud)

我做错了什么或我应该怎么做?谢谢!

java android inputstream readline bufferedreader

143
推荐指数
3
解决办法
17万
查看次数

用于管道heredoc的多行语法; 这便携式吗?

我熟悉这种语法:

cmd1 << EOF | cmd2
text
EOF
Run Code Online (Sandbox Code Playgroud)

但刚刚发现bash允许我写:

cmd1 << EOF |
text
EOF
cmd2
Run Code Online (Sandbox Code Playgroud)

(heredoc用作cmd1的输入,cmd1的输出用于cmd2).这似乎是一个非常奇怪的语法.它是便携式的吗?

bash shell pipe heredoc sh

122
推荐指数
4
解决办法
3万
查看次数

关闭除活动选项卡以外的所有选项卡?

我想知道是否有任何方法可以关闭除活动选项卡之外的所有选项卡.

任何的想法?

标签:当前

vim

62
推荐指数
2
解决办法
7020
查看次数

你如何注释分支?

有没有办法注释分支?能做这样的事情会很高兴:

$ git notes add branch-name -m 'This branch is for whatever'

但这当然不是非常有用,因为该注释适用于当前的分支头而不是分支本身.

一个简单的解决方法是在存储库中删除README.branch-name,但这看起来很笨拙.稍微优雅的是有一个孤立的分支只包含README.branch-names.我正在寻找一种方法来记录分支的目的,而不仅仅是将它放在提交消息中,用于分支的"第一次"提交.我把"第一"放在引号中是因为它并不总是清楚它是什么意思,这就是将讨论放在提交消息中不方便的原因.通常很难找到记录此类消息的提交.

git

49
推荐指数
3
解决办法
1万
查看次数

惯用缓冲os.Stdout

os.Stdout.Write()是一个无缓冲的写.要获得缓冲写入,可以使用以下内容:

f := bufio.NewWriter(os.Stdout)
f.Write(b)
Run Code Online (Sandbox Code Playgroud)

题:

是否有更惯用的方式来获得缓冲输出?

go

40
推荐指数
1
解决办法
1万
查看次数

使用awk在一行上打印特定索引的字符

好吧,所以我知道使用$打印一行的特定参数非常简单:

$ cat file
hello world

$ awk '{print $1}' file
hello
Run Code Online (Sandbox Code Playgroud)

但是如果我想打印2到8的字符怎么办?还是3到7?用awk可以吗?

awk

38
推荐指数
1
解决办法
7万
查看次数

如何将上下文后面的grep设置为"直到下一个空白行"?

使用grep我知道如何将上下文设置为固定数量的行.是否可以根据任意字符串条件显示上下文,例如将后上下文设置为"直到下一个空白行"?

或者可能还有其他一些工具组合?

基本上我有一个连续行的日志文件,空白行分隔我要在日志文件中搜索字符串的"事件",但显示整个事件....

unix linux awk grep

35
推荐指数
3
解决办法
2万
查看次数

是否有必要指定除EXIT之外的陷阱?

我看到很多shell脚本:

trap cmd 0 1 2 3 13 15 # EXIT HUP INT QUIT PIPE TERM

在我现在可以访问的每个shell中,除0之外的所有陷阱都是冗余的,如果只是指定了陷阱,则在收到信号时将执行cmd:

trap cmd 0

后一个规范是否足够,或者某些shell是否需要指定其他信号?

bash shell ksh zsh sh

33
推荐指数
3
解决办法
2万
查看次数

始终使用寻呼机进行git diff

我正在使用less我的git寻呼机.

如果git diff输出在一个页面上是可读的,我的git会将输出打印到屏幕上.有时我打字速度太快Ctrl+D(半页下来),这会杀死我的终端.是否有选项可以启用寻呼机git diff,即使输出非常小?

不起作用:

  • git -p diff
  • git --paginate diff
  • git 设置: pager.diff = true

git git-diff git-config

33
推荐指数
1
解决办法
8257
查看次数

标签 统计

awk ×2

bash ×2

git ×2

sh ×2

shell ×2

android ×1

bufferedreader ×1

c ×1

feof ×1

file ×1

git-config ×1

git-diff ×1

go ×1

grep ×1

heredoc ×1

inputstream ×1

java ×1

ksh ×1

linux ×1

pipe ×1

readline ×1

unix ×1

vim ×1

while-loop ×1

zsh ×1