我坚持这个.目前我正在使用:
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) 我知道一元运算符++将一个加到一个数字上.但是,我发现如果我在一个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.