我正在學校項目中,我們必須在保存在.txt文件中的表上執行一些操作(select,min,max)。 問題是我們不能使用fopen,fscanf,fclose等常用函數。沒有fopen的讀文件()(C語言)
該計劃將通過命令行啓動這樣的:.\project.exe select parameters <table.txt
你有一些想法如何讓.txt文件到標準輸入的內容,而無需使用的fopen? 謝謝。
我正在學校項目中,我們必須在保存在.txt文件中的表上執行一些操作(select,min,max)。 問題是我們不能使用fopen,fscanf,fclose等常用函數。沒有fopen的讀文件()(C語言)
該計劃將通過命令行啓動這樣的:.\project.exe select parameters <table.txt
你有一些想法如何讓.txt文件到標準輸入的內容,而無需使用的fopen? 謝謝。
你不需要打開文件 - 操作環境將爲你做。
當你的程序被調用<table.txt
時,你的標準輸入被切換到從該文件而不是鍵盤讀取。您可以使用scanf
來讀取數據,不必擔心打開和關閉文件。
您的程序輸出和>table_out.txt
重定向也是如此:您的程序中的printf
將不會打印到屏幕上,而是寫入文件,該文件將在程序退出時自動關閉。當然,如果你需要在你的輸出重定向到打印內容到屏幕上,你可以通過打印到stderr
(這麼做如fprintf(stderr, "Invalid table format\n")
。
謝謝。我在CodeBlocks中啓動程序,它不工作,因爲它應該。在命令行中試過並且完美地工作 – 2014-10-18 12:46:36
有幾種方法可以acomplish這一點。
我想老師要尤其在該方法的思路是讀標準輸入,而不是特定的文件 在C++中,你可以簡單地讀取標準輸入對象下面是一個例子:。
#include <stdio.h>
#include <string.h>
int main(void)
{
char str[80];
int i;
printf("Enter a string: ");
fgets(str, 10, stdin);
/* remove newline, if present */
i = strlen(str)-1;
if(str[ i ] == '\n')
str[i] = '\0';
printf("This is your string: %s", str);
return 0;
}
來源:http://www.java2s.com/Code/C/Console/Usefgetstoreadstringfromstandardinput.htm
你可以稱之爲 「類型」 UTIL @的Windows(不知道它)或 「貓」 中的util Linux作爲一個子讀一些partticular文件。但這是一個「黑客」,所以我不建議使用這個。
該文件被重定向到標準輸入,所以他不需要打開,因爲它已經打開 – Pradheep 2014-10-18 12:39:06
是不是應該是'./project select parameters
當您調用'prog
2014-10-18 12:35:21
@shekharsuman你試圖問的問題是」應該不是......「。答案是「不是,如果它是Windows」 – GreenAsJade 2014-10-18 12:35:27