因为我正在使用打开,读取和写入文件的功能,所以我有以下
#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();
会写入请求的文件。
只是想指向正确的方向,答案可能很简单。
感谢
答案 0 :(得分:1)
您不能将值“管道”到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;
}