$ 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
之后,我解决了问题。我认为这是因为它依赖于用户的输入来初始化自己。