我正在尝试打开.txt文件并将其内容放在标准输入中。我知道你可以这样做:
<?php
if ($this->session->userdata("username")==$info->U_username){ ?
<td><a href="<? echo base_url() ; ?>/gamestalker/edit_content/<? echo $info->C_id ; ?>">EDIT</a></td>
<? }
?>
但我想在程序中多次使用相同的内容,我认为使用此方法会消耗stdin内容,不能再次使用。
我想测试一个从stdin读取的函数,就像我正在尝试的一个例子一样:
myapp < input.txt
答案 0 :(得分:1)
无需修改代码。只需执行您的程序(假设您使用的是Unix):
while true; do cat input.txt; done | myapp
这将一遍又一遍地向您的input.txt
提供stdin
。考虑到你需要弄清楚每次重复结束的时间,因为stdin
永远不会这样做。
答案 1 :(得分:0)
这是一个简单的例子,说明如何将stdin读入存储缓冲区和文件。
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#define MAXLINELENGTH 4096
FILE *fin;
char fileName[] = "temp.txt";
void processLine(char *line)
{
fin = fopen(fileName, "a");
fputs(line, stdout);
fputs(line, fin);
fclose(fin);
return;
}
int main()
{
char line[1024];
char input[MAXLINELENGTH];
printf("enter continuous text, and ~ when finished\n");
while (fgets(line, 1024, stdin) != NULL)
{
processLine(line);
if(strstr(line, "~")) //enter a "~" to exit program
return 0;
}
return 0;
}
获得该文件后,您可以使用fopen()
和fgets()
从中读取该文件,然后将其写回到stdout。
答案 2 :(得分:0)
你可以像这样轻松写入stdin:
char *buffer = malloc(bufsize * sizeof(char));
... //get file contents etc.
write(STDIN_FILENO, buffer, bufsize); //the important part.
你需要包含unistd.h,我不认为它是可移植的。