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

时间:2015-04-09 13:02:25

标签: c unix

因为我正在使用打开,读取和写入文件的功能,所以我有以下

#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();会写入请求的文件。

只是想指向正确的方向,答案可能很简单。

感谢

1 个答案:

答案 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;
}