❶ c語言中如何使用txt文件中的數據變數
使用fopen,fscanf函數可以實現從文件當中讀取內容,進行簡單操作。
1.fopen的函數原型:FILE
*
fopen(const
char
*
path,const
char
*
mode);
fopen函數的第一個參數是文件路徑,第二個參數是打開方式,有以下幾種方式:
r
以只讀方式打開文件,該文件必須存在。
r+
以可讀寫方式打開文件,該文件必須存在。
rb+
讀寫打開一個二進制文件,允許讀數據。
rw+
讀寫打開一個文本文件,允許讀和寫。
w
打開只寫文件,若文件存在則文件長度清為0,即該文件內容會消失。若文件不存在則建立該文件。
w+
打開可讀寫文件,若文件存在則文件長度清為零,即該文件內容會消失。若文件不存在則建立該文件。
a
以附加的方式打開只寫文件。若文件不存在,則會建立該文件,如果文件存在,寫入的數據會被加到文件尾,即文件原先的內容會被保留。(EOF符保留)
a+
以附加方式打開可讀寫的文件。若文件不存在,則會建立該文件,如果文件存在,寫入的數據會被加到文件尾後,即文件原先的內容會被保留。
(原來的EOF符不保留)
wb
只寫打開或新建一個二進制文件;只允許寫數據。
wb+
讀寫打開或建立一個二進制文件,允許讀和寫。
wt+
讀寫打開或著建立一個文本文件;允許讀寫。
at+
讀寫打開一個文本文件,允許讀或在文本末追加數據。
ab+
讀寫打開一個二進制文件,允許讀或在文件末追加數據。
上述的形態字元串都可以再加一個b字元,如rb、w+b或ab+等組合,加入b
字元用來告訴函數庫打開的文件為二進制文件,而非純文字文件。
返回值:文件順利打開後,指向該流的文件指針就會被返回。如果文件打開失敗則返回NULL,並把錯誤代碼存在errno中。
2.常式:
#include
#define F_PATH "d:\\myfile\\file.dat"
char c;
int main(){
FILE*fp=NULL;//需要注意
fp=fopen(F_PATH,"r");
if(NULL==fp) return -1;//要返回錯誤代碼
while(fscanf(fp,"%c",&c)!=EOF) printf("%c",c); //從文本中讀入並在控制台列印出來
fclose(fp);
fp=NULL;//需要指向空,否則會指向原打開文件地址
return 0;
}
❷ C語言程序運行怎樣輸入數據
比方說
int
a;
printf("請輸入一個數字:");
scanf("%d",&a);
printf("你輸入的數字是:%d",a);
當按回車時就代表你確定了輸入
❸ 怎樣用C語言從txt文件中讀入數據
1 以fopen打開文件,使用"r"方式。
2 通過fscanf,按照文件中的數據格式,讀入數據。
3 關閉文件並使用數據。
如文件in.txt中存在三個以空格分隔的數據,依次為整型,字元串,以及浮點型,則讀取數據的代碼可以寫作:
intmain()
{
FILE*fp;
inta;
chars[100];
floatf;
fp=fopen("in.txt","r");
if(fp==NULL)return-1;//打開文件失敗,結束程序。
fscanf(fp,"%d%s%f",&a,s,&f);
fclose(fp);
printf("readvalue:%d,%s,%f",a,s,f);
}
❹ 如何用C語言實現讀取excel文件中的數據呢
基本思路
基礎實現方法同上篇文章《直接通過ODBC讀、寫Excel表格文件》相同,都是通過ODBC來把Excel表格文件當成資料庫文件來進行讀、寫等操作,所以在Excel表格文件中寫入的行頭名必須是唯一的(不要重名,相當於資料庫中的ID值)。本文中對Excel文件的操作都被封裝進一個類CSpreadSheet中,通過它我們可以非常簡便的實現各種Excel表格數據操作,並且可以對該類進行擴充來滿足自己的需求。
具體實現
一、 包含Excel文件操作類頭文件
#include "CSpreadSheet.h"
二、 新建Excel文件,並寫入默認數據
// 新建Excel文件名及路徑,TestSheet為內部表名
CSpreadSheet SS("c:\\Test.xls", "TestSheet");
CStringArray sampleArray, testRow;
SS.BeginTransaction();
// 加入標題
sampleArray.RemoveAll();
sampleArray.Add("姓名");
sampleArray.Add("年齡");
SS.AddHeaders(sampleArray);
// 加入數據
CString strName[] = {"徐景周","徐志慧","郭徽","牛英俊","朱小鵬"};
CString strAge[] = {"27","23","28","27","26"};
for(int i = 0; i < sizeof(strName)/sizeof(CString); i++)
{
sampleArray.RemoveAll();
sampleArray.Add(strName[i]);
sampleArray.Add(strAge[i]);
SS.AddRow(sampleArray);
}
SS.Commit();
三、 讀取Excel文件數據
CSpreadSheet SS("c:\\Test.xls", "TestSheet");
CStringArray Rows, Column;
//清空列表框
m_AccessList.ResetContent();
for (int i = 1; i <= SS.GetTotalRows(); i++)
{
// 讀取一行
SS.ReadRow(Rows, i);
CString strContents = "";
for (int j = 1; j <= Rows.GetSize(); j++)
{
if(j == 1)
strContents = Rows.GetAt(j-1);
else
strContents = strContents + " --> " + Rows.GetAt(j-1);
}
m_AccessList.AddString(strContents);
}
四、 對已存在Excel表格數據進行添加、插入、替換操作
// 初始化測試行數據,進行添加、插入及替換數據操作演示
for (int k = 1; k <= 2; k++)
{
testRow.Add("Test");
}
SS.AddRow(testRow); // 添加到尾部
SS.AddRow(testRow, 2); // 插入新行到第二行
SS.AddRow(testRow, 6, true); // 替換原第四行來新的內容
SS.AddCell("徐景周", 1,2); // 添加(不存在)或替換(存在)第二行,第一列單元格內容
SS.Commit();
五、 對已存在Excel表格數據進行行、列、單元格查詢
void CExcelAccessDlg::OnQuery()
{
CSpreadSheet SS("c:\\Test.xls", "TestSheet");
CStringArray Rows, Column;
CString tempString = "";
UpdateData();
if(m_strRow == "" && m_strColumn == "") // 查詢為空
{
AfxMessageBox("行號、列號不能同時為空!");
return;
}
else if(m_strRow == "" && m_strColumn != "") // 查詢指定列數據
{
int iColumn = atoi(m_strColumn);
int iCols = SS.GetTotalColumns();
if(iColumn > iCols) // 超出表范圍查詢時
{
CString str;
str.Format("表中總列數為: %d, ", iCols);
AfxMessageBox(str + " 查詢列數大於Excel表中總列數,請重新輸入!");
return;
}
// 讀取一列數據,並按行讀出
if(!SS.ReadColumn(Column, iColumn))
{
AfxMessageBox(SS.GetLastError());
return;
}
CString tmpStr;
for (int i = 0; i < Column.GetSize(); i++)
{
tmpStr.Format("行號: %d, 列號: %d ,內容: %s\n", i+1,iColumn,Column.GetAt(i));
tempString += tmpStr;
}
AfxMessageBox(tempString);
}
else if(m_strRow != "" && m_strColumn == "") // 查詢指定行數數據
{
int iRow = atoi(m_strRow);
int iRows = SS.GetTotalRows();
if(iRow > iRows) // 超出表范圍查詢時
{
CString str;
str.Format("表中總行數為: %d, ", iRows);
AfxMessageBox(str + " 查詢行數大於Excel表中總行數,請重新輸入!");
return;
}
// 讀取指定行數據
if(!SS.ReadRow(Rows, iRow))
{
AfxMessageBox(SS.GetLastError());
return;
}
CString tmpStr;
for (int i = 0; i < Rows.GetSize(); i++)
{
tmpStr.Format("行號: %d, 列號: %d ,內容: %s\n", iRow, i+1, Rows.GetAt(i));
tempString += tmpStr;
}
AfxMessageBox(tempString);
}
else if(m_strRow != "" && m_strColumn != "") // 查詢指定單元格數據
{
int iRow = atoi(m_strRow), iColumn = atoi(m_strColumn);
int iRows = SS.GetTotalRows(), iCols = SS.GetTotalColumns();
if(iColumn > iCols) // 超出表范圍查詢時
{
CString str;
str.Format("表中總列數為: %d, ", iCols);
AfxMessageBox(str + " 查詢列數大於Excel表中總列數,請重新輸入!");
return;
}
else if(iRow > iRows)
{
CString str;
str.Format("表中總行數為: %d, ", iRows);
AfxMessageBox(str + " 查詢行數大於Excel表中總行數,請重新輸入!");
return;
}
// 讀取指定行、列單元格數據
if(!SS.ReadCell(tempString, iColumn, iRow))
{
AfxMessageBox(SS.GetLastError());
return;
}
CString str;
str.Format("行號: %d, 列號: %d ,內容: %s", iRow,iColumn,tempString);
AfxMessageBox(str);
}
}
六、 將存在的Excel轉換另存為指定分隔的文本文件
// 將原Excel文件轉換為用分號分隔的文本,並另存為同名文本文件
SS.Convert(";");
七、 刪除Excel中表格
SS. DeleteSheet(); // 刪除Excel文件中所有表格
SS. DeleteSheet(" TestSheet "); // 刪除Excel中TextSheet表格
八、 獲取Excel中總行數、總列數、當前行
int iCols = SS.GetTotalColumns(); // 總列數
int iRows = SS.GetTotalRows(); // 總行數
int iCurRow = SS.GetCurrentRow(); // 當前所在行號
九、 獲取行頭數據
CStringArray rowHeader;
SS.GetFieldNames(rowHeader);
CString tmpStr;
for (int i = 0; i < rowHeader.GetSize(); i++)
{
tmpStr.Format("行號: %d, 列號: %d ,內容: %s\n", 1, i+1, rowHeader.GetAt(i));
tempString += tmpStr;
}
AfxMessageBox(tempString);
最後,如果想知道詳細實現細節的話,可以在下載示例源碼後,仔細查看源碼既可(內有詳細注釋)。
❺ C語言程序運行怎樣輸入數據
通過在代碼中添加讀入數據的函數,來達到輸入數據的目的。
常用的讀入數據的函數有,scanf, getchar, gets等。
scanf是格式化輸入,可以用來輸入各種類型。
getchar功能為讀入一個單個字元。
gets功能為讀入一行輸入存為字元串,並把換行符替換為字元串結束符。
這幾個函數都在stdio.h中,所以使用的時候,需要在文件頭添加如下語句:
#include <stdio.h>
以scanf為例,做以下程序:
#include<stdio.h>
intmain()
{
intv;
printf("pleaseinputanumber:");//輸出提示語句。
scanf("%d",&v);//用scanf讀入一個整型數據,並存到v中,其中%d為格式字元,對應整型。
printf("thenumberis%d ",v);//輸出得到的數據。
return0;
}