我看到人们最近在很多帖子中试图读取这样的文件.
码
#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__
循环有什么问题?
我正在尝试使用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)
我做错了什么或我应该怎么做?谢谢!
我熟悉这种语法:
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).这似乎是一个非常奇怪的语法.它是便携式的吗?
有没有办法注释分支?能做这样的事情会很高兴:
$ git notes add branch-name -m 'This branch is for whatever'
但这当然不是非常有用,因为该注释适用于当前的分支头而不是分支本身.
一个简单的解决方法是在存储库中删除README.branch-name,但这看起来很笨拙.稍微优雅的是有一个孤立的分支只包含README.branch-names.我正在寻找一种方法来记录分支的目的,而不仅仅是将它放在提交消息中,用于分支的"第一次"提交.我把"第一"放在引号中是因为它并不总是清楚它是什么意思,这就是将讨论放在提交消息中不方便的原因.通常很难找到记录此类消息的提交.
os.Stdout.Write()
是一个无缓冲的写.要获得缓冲写入,可以使用以下内容:
f := bufio.NewWriter(os.Stdout)
f.Write(b)
Run Code Online (Sandbox Code Playgroud)
题:
是否有更惯用的方式来获得缓冲输出?
好吧,所以我知道使用$打印一行的特定参数非常简单:
$ cat file
hello world
$ awk '{print $1}' file
hello
Run Code Online (Sandbox Code Playgroud)
但是如果我想打印2到8的字符怎么办?还是3到7?用awk可以吗?
使用grep我知道如何将上下文设置为固定数量的行.是否可以根据任意字符串条件显示上下文,例如将后上下文设置为"直到下一个空白行"?
或者可能还有其他一些工具组合?
基本上我有一个连续行的日志文件,空白行分隔我要在日志文件中搜索字符串的"事件",但显示整个事件....
我看到很多shell脚本:
trap cmd 0 1 2 3 13 15 # EXIT HUP INT QUIT PIPE TERM
在我现在可以访问的每个shell中,除0之外的所有陷阱都是冗余的,如果只是指定了陷阱,则在收到信号时将执行cmd:
trap cmd 0
后一个规范是否足够,或者某些shell是否需要指定其他信号?
我正在使用less
我的git
寻呼机.
如果git diff输出在一个页面上是可读的,我的git会将输出打印到屏幕上.有时我打字速度太快Ctrl+D
(半页下来),这会杀死我的终端.是否有选项可以启用寻呼机git diff
,即使输出非常小?
不起作用:
git -p diff
git --paginate diff
git
设置: pager.diff = true