c-使用nanosleep()时出现分段错误


$ ls
baby.txt      readlyrics.c

我尝试编写一个简单的程序,使用nanosleep((从.txt文件打印文本,以获得某种动画效果:

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

int main(int argc, char *argv[]) {
char *target_file = argv[1];
char *sec     = argv[2];
char *nsec     = argv[3];
int   tv_sec  = atoi(sec);
float tv_nsec = atof(nsec);
struct timespec *t;
t->tv_sec  = tv_sec;
t->tv_nsec = (long)(tv_nsec * 1000000000);
FILE *content = fopen(target_file, "r");
int *c  = malloc(sizeof(char));
c       = NULL;
c = fgetc(content);
while(c) {
printf("%c", c);
c = NULL;
nanosleep(t, NULL);
c = fgetc(content);
}
fclose(content);
return 0;
}

得到一个错误:

$ ./read ./baby.txt 0 0.01
zsh: segmentation fault  ./read ./baby.txt 0 0.01

代码的哪一部分出错了?

我想我现在知道答案了。。。除了变量c之外,我还将t声明为指针,但它没有初始化,在将struct timespec *更改为struct timespec之后,我解决了问题。我认为这是因为它依赖于用户的输入来初始化自己。

最新更新