小编Spr*_*eet的帖子

将文件打印到stdout的最有效方法是什么?

我坚持这个.目前我正在使用:

FILE *a = fopen("sample.txt", "r");
int n;
while ((n = fgetc(a)) != EOF) {
  putchar(n);
}
Run Code Online (Sandbox Code Playgroud)

然而,这种方法似乎有点低效.有没有更好的方法?我尝试使用fgets:

char *s;
fgets(s, 600, a);
puts(s);
Run Code Online (Sandbox Code Playgroud)

对于第二种方法,我发现有一件事是错误的,即对于fgets的第二个参数,你需要一个非常大的数字.

感谢所有的建议.我找到了一种方法(IRC上有人告诉我这个)使用open(),read()和write().

char *filename = "sample.txt";
char buf[8192];
int r = -1;
int in = open(filename, O_RDONLY), out = 0;
if (in == -1)
  return -1;
while (1) {
  r = read(in, buf, sizeof(buf));
  if (r == -1 || r == 0) { break; }
  r = write(out, buf, r);
  if (r == -1 || r …
Run Code Online (Sandbox Code Playgroud)

c file

4
推荐指数
2
解决办法
1050
查看次数

C指针上的一元加法如何工作?

我知道一元运算符++将一个加到一个数字上.但是,我发现如果我在一个int指针上执行它,它会递增4(我的系统上的int的sizeof).为什么这样做?例如,以下代码:

int main(void)
{
  int *a = malloc(5 * sizeof(int));
  a[0] = 42;
  a[1] = 42;
  a[2] = 42;
  a[3] = 42;
  a[4] = 42;
  printf("%p\n", a);
  printf("%p\n", ++a);
  printf("%p\n", ++a);
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

将返回三个数字,每个数字之间相差4.

c pointers addition

4
推荐指数
1
解决办法
800
查看次数

标签 统计

c ×2

addition ×1

file ×1

pointers ×1