gpt4 book ai didi

c - 文本打印在最后,而通常它应该打印在顶部

转载 作者:太空宇宙 更新时间:2023-11-04 03:52:31 25 4
gpt4 key购买 nike

我创建了这个函数来打印文件内容:

void afficher (char * nomFichier){
if( nomFichier == NULL )
printf("Erreur : %s\n",nomFichier);
else
{
char buf[15];
int nb;
int fd = open(nomFichier,O_RDONLY);
if(fd == -1) printf ("Erreur ouverture : %s\n",nomFichier);
else
{
printf("Fichier : %s\n",nomFichier);//print the file name
while((nb = read(fd,buf,15)) > 0){
write(1,buf,nb);
}
printf("\n");
close(fd);
}
}
}

问题是,当我在程序中调用此函数时,该程序将 dup2'ed stdout 写入文件(此 cas 中为 fichierSortie)

int fd = open(fichierSortie, mode, 0666 );
if( fd == -1 ) // erreur
Erreur("Erreur lors de création du fichier : ",2);
printf("%d\n",dup2(fd,1)); // on redirige la sortie standard
close(fd);
afficher(filename);

我明白了:

line1
line2
last line of the file
Fichier : filename

但通常我应该得到

Fichier : filename
line1
line2
last line of the file

谢谢

最佳答案

对此不太确定,但是......

 // Performed buffered so it goes out when internal buffering is full or flushed
printf("Fichier : %s\n",nomFichier);
...
// Performed unbuffered, so it goes out promptly
write(1,buf,nb);

为了同步,fflush(stdout)

 // Performed buffered so it goes out when internal buffering is full or flushed
printf("Fichier : %s\n",nomFichier);
fflush(stdout);
...
// Performed unbuffered, so it goes out promptly
write(1,buf,nb);
...
printf("\n");
fflush(stdout);

顺便说一句:建议不要尝试打印 NULL。

if( nomFichier == NULL )
// printf("Erreur : %s\n",nomFichier);
printf("Erreur : (NULL)\n");

关于c - 文本打印在最后,而通常它应该打印在顶部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19621564/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com