gpt4 book ai didi

c - 打开并写入文件函数/将变量传递给c中的函数?

转载 作者:行者123 更新时间:2023-11-30 15:21:36 25 4
gpt4 key购买 nike

因为我经常使用打开、读取和写入文件的功能,所以我有以下内容

#include <sys/stat.h>
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <errno.h>
#include "header.h"
#include <fcntl.h>
#include <string.h>


int openfile()
{
char buffer[4096];
int input_file1;
char userInput = malloc(100);
int n;

if((input_file1 = open(userInput, O_RDONLY)) < 0) //opens file specified as userInput
{
perror(userInput);
exit(1);
}

while((n = read(input_file1, buffer, sizeof(buffer))) > 0) //reads file
{
if((write(STDOUT_FILENO, buffer, n)) < 0) //writes to stdout
{
perror("failed to display file to output");
close(input_file1);
exit(1);
}
}

}

显然变量userInput未设置,但我希望能够...在main();中针对可能不同的用户输入多次调用此函数。

如何获取在 main(); 中设置的变量并将其通过管道传输到下面的函数中?

所以,在 main(); 中,我会在收到设置 userInput 变量的输入后调用 openfile(); ,然后调用 openfile(); 将写入所请求的文件。

只要寻找正确的方向,答案可能很简单。

谢谢

最佳答案

您不能将值“通过管道”传递给 C 中的函数(如 unix 管道)。但是,您可以简单地将 userInput 传递给您的函数 openfile()

int openfile( char *userInput)
{
char buffer[4096];
int input_file1;
int n;
.....
}

并从main()传递它:

int main(void)
{
char userInput[256];

/*read userInput here */
openfile(userInput);
....
return 0;
}

如果您想读取多个输入并将其全部打印出来,可以使用循环。

int main(void)
{
int i;
char userInput[256];

for (i=0; i<10; i++) { /* Reads 10 files */
/*read userInput here */
openfile(userInput);
}
....
return 0;
}

关于c - 打开并写入文件函数/将变量传递给c中的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29539261/

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