c - 程序在 printf 上挂起或跳过 printf

标签 c

我的程序是每隔一段时间获取文件大小并显示它以记录任何更改。由于某种原因,执行下面的代码挂起,只为我提供了一个光标。没有打印或显示任何内容。

代码:

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

int main(int argc, char *argv[])
{
  if (argc != 3)
  {
    printf("ERROR: Please enter correct amount of arguments."); 
    exit(0);
  }

  FILE *fp = fopen(argv[1], "r");
  int time = atoi(argv[2]);
  int size=0;

  printf("Seconds File Size");

  while(1)
  {
    fseek(fp, 0L, SEEK_END);
    size = ftell(fp);

    sleep(4);
  }
  fclose(fp);
}

最佳答案

主要问题是,您将字符串输出到缓冲区,然后在确保缓冲区刷新到屏幕之前进入无限循环。

printf("Seconds File Size");
fflush(stdout);

其他问题:

  1. 您没有检查fopen()的结果
  2. 无法退出无限循环。

关于c - 程序在 printf 上挂起或跳过 printf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32752332/

相关文章:

c++ - 从 printf 切换到 cout - 复杂格式说明符模式

c - waitpid 用法错误?

c - 为什么我的 C 程序中出现 ws2_32.dll 的链接器错误?

c++ - 是否可以出于调试目的在 C/C++ 中定义/扰乱不确定值?

c - malloc() 何时设置 EAGAIN 错误?

c - "rand()% 11"是什么以及这和 "rand()% 10+1"之间有什么区别?

c++ - 重新分配而不释放旧内存

c - 在 C 中有效地提取 double 的小数部分

c - 如何将 char *a[] 转换为 char **?

c - 未命名结构的灵活数组成员