程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> UC++之目錄和文件操作

UC++之目錄和文件操作

編輯:C++入門知識

* UC
  + 文件系統
- 目錄操作
- 文件操作
  + 多進程
- 進程間關系
- 進程間通信
  + 網絡通信
- 基礎知識
- 實踐(tcp/udp)

QT,KDE: Linux環境下的圖形環境編程

=================================================================
* 環境變量:

  + 如何在程序中取得環境變量的內容?


//取得所有的環境變量 -
#include <iostream>
using namespace std;

int main(int argc, char* argv[], char* env[])
{
        for( int i=0; env[i]; i++ ){
                if(i<9) cout << 0;
                cout<< i+1 <<":   " << env[i] << endl;
                if(i%8==7) cin.get();
        }
        cout << endl;
}
在進程中設置的環境變量只在本進程與子進程裡使用
因此我們幾乎不在程序裡修改環境變量.

//得到確定的環境變量
#include <iostream>
#include <cstdlib>
using namespace std;

int main()
{
        char* name = "HOME";
        char* value = NULL;
        value = getenv(name);
        cout << "value=" << value << endl;
}
//設置環境變量
#include <iostream>
using namespace std;
#include <cstdlib>

int main()
{
        char* var = "baby=beauty";
        char* name="baby";
        putenv(var);
        char* value = getenv(name);
        cout << "value=" << value << endl;
}


* 編程習慣:
1, 向函數傳遞指針數組的時候,如果沒有說明元素個數,總是用一個NULL放在末尾.以

NULL作為結束標志.
2, 返回指針的函數,正常返回一個非空指針,出錯返回NULL.
3, 返回整數函數,正常返回一個非負整數(通常是0),出錯返回負數(通常是-1)
perror("提示");//顯示內容為: 提示:錯誤信息文字描述
-----------------------------------------------------------
* 用戶信息:
設置-用戶權限:chmod u+s a.out//把用戶ID符加到文件上
//指權限沾符到這個文件上,讓使用這個文件的用戶都有擁有者一樣的權限
XXX_t 表示是一個整數
struct passwd* getpwuid (int userid)//得到一個指向passwd結構的指針,該結構

包括用戶相關信息記錄.

#include <iostream>
using namespace std;
#include <pwd.h>

int main()
{
 passwd* p = NULL;
 string name;
 int uid;
 cout << "input username or id:";
 char ch;
 ch = cin.peek();
 if(ch>=0&&ch<=9){
  cin >> uid;
  p = getpwuid(uid);
 }
 else{
  cin >> name;
  p = getpwnam(name.c_str());
 }
 if(p==NULL){
  cout << "error!" << endl;
 }
 else{
  cout << p->pw_name << endl;
  cout << p->pw_uid << endl;
  cout << p->pw_gid << endl;
  cout << p->pw_dir << endl;
  cout << p->pw_shell << endl;
 }
  
}

---------------------------------------------------------
* 文件系統:
  + 目錄
pwd:print working directory

/char* getcwd(char* buf,size_t size);//取得當前工作目錄,出錯返回NULL
// buf是放目錄名字符串的地方,一般是一個字符數組名.
// size 為了避免越界,會把字符串長度也傳過去
// 凡是要自已准備字符數組來保存字符串的時候,也要把長度傳過去.
// 數組越界訪問會導致破壞其它數據或程序崩潰.
// 根據返回值判斷是否出錯
// 函數裡有一條語句: return buf;
// 因此可以直接 cout << getcwd(buf,256);
// getcwd.cc
#include <iostream>
using namespace std;
#include <unistd.h>
int main()
{
 char buf[256] = "(unknow)";// 一定要用char數組
 cout << getcwd(buf,256) << endl;ssss
 cout << buf << endl;
}
DIR* opendir(const char* dirname)//打開目錄
/不能定義一個DIR對象,通常也不會定義DIR*類型變量
struct dirent* readdir(DIR* dirp)//讀取目錄
int closedir(DIR* dirp)//關閉目錄流
//dir.cc
#include <iostream>
using namespace std;
#include <dirent.h>
#include <sys/types.h>
#include <list>
#include <string>
#include <iterator>
#include <algorithm>
int main(int argc,char* argv[])
{
        char* dir = NULL;
        if(argc==1)
                dir = ".";
        else
                dir = argv[1];
        DIR* p = opendir(dir);//....
        if(p==NULL){
                cout << "not directory or not exitst" << endl;
                return -1;//....
        }
        list<string> ls;
        dirent* pd = NULL;
        while( (pd=readdir(p))){
                if(pd->d_name[0]==.) continue;
                ls.push_back(pd->d_name);
        }
        closedir(p);//.....
        ls.sort();
        //copy(ls.begin(),ls.end(),ostream_iterator<string>(cout," "));
        list<string>::iterator it;
        it = ls.begin();
        while(it!=ls.end())
                cout << *it++ <<   << endl;
        cout << endl;
        return 0;//....
} //end of main

int stat(const char* path/*文件名*/,stat* buf)函數;//用來取得一個文件的信

//stat.cc
#include <iostream>
using namespace std;
#include <sys/stat.h>
#include <sys/types.h>
#include <fcntl.h>

int main(int argc, char* argv[])
{
        if(argc==1) {
                cout << "no filename" << endl;
                return 0;
        }
        int res;
        struct stat s;
        res = stat(argv[1],&s);
        if(res <0){
    &nbs

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved