我应该使用的API是open(),write()和sprintf()。如果你要发布一个回答的回应,请不要推荐任何其他的API。
我的程序应该扫描10个元素,然后以相反的顺序将元素打印到终端和一个txt文件中。
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <err.h>
#include <sys/types.h>
#include <unistd.h>
int main(int argc, char **argv)
{
int fd;
char buffer[100];
int *arr;
int i;
arr = malloc(10 * sizeof(int));
fd = open("file.txt", O_WRONLY | O_CREAT, 0644);
if (fd < 0)
{
perror("write() failed\n");
exit(-1);
}
printf("Input 10 elements in the array:\n");
for(int i = 0; i < 10; i++){
scanf("%d", &arr[i]);
}
printf("\nElements in array are: ");
sprintf(buffer, "Elements in array are: ");
// write(fd, buffer,strlen(buffer));
for(int j=9; j>=0; j--){
//print to console
printf("\n%d ", arr[j]);
sprintf(buffer,"\n%d", arr[i]);
}
//write to file
write(fd, buffer,strlen(buffer));
close(fd);
free(arr);
printf("\n");
return 0;
}
数组的元素以相反的顺序打印到终端,非常好。我所停留的地方是将其打印到文本文件。我知道如何使用fprintf()并使用该API写入文本文件,但现在我的指令是使用open()和write()。在我的文本文件中,我有以下内容:1
我的问题是我能做些什么来修复这个问题,并在txt文件中获得正确的输出。谢谢。
我试过上面的代码。
1条答案
按热度按时间zynd9foi1#
在这个for循环中
数组
arr
的每个元素被写入buffer
的开始处,覆盖buffer
的先前内容。你可以这样写
在这种情况下,数组的每个下一个元素都将追加到已经存储在
buffer
中的字符串。这是一个演示程序。
程序输出为
另一种方法是将此语句
在for循环中。