㈠ c語言請問命令行怎樣輸入的
將命令行的目錄轉到你程序.exe文件的目錄(假設為xxx.exe),那麼你輸入xxx.exe 5 hello應該就得了,因為主函數main可以傳入一個int變數和一串字元,數字是要輸出的字元串的字元個數,後面就是你輸入的字元串。
不過你是初學嗎,初學馬上學這個好像有點早,不過也沒事。原理就類似於其他dos命令一樣,後面可以直接接參數,不用scanf的。
還有,更改目錄用cd命令
㈡ c語言編程最基本的一些命令
給你的建議,你要是學的好玩。那無所謂,要是想認認真真學,最起碼把最基本的英語學好,要不然即使我們告訴你的英語,你也是一知半解,所以我建議你還是對英語有個基本的認識,不是說讓你要怎麼怎麼樣,至少會基本的,但若你想以後依然想更高的編程水平,不學英語是很難的啊。這只是我的一點建議,不要把最基本的部分交給別人來完成,希望你加油。
int 整形 (integer)float 浮點型double 雙精度小數if 如果else 否則while 當for 為,當不過英語的意思和語句的意思不是一個概念,你要是僅僅在英語意思上糾纏,還是一知半解的。
㈢ c語言指令有哪些啊
第一章:緒論?
內核版本號格式:x.y.zz-www/x為主版本號,y為次版本號,zz為次次版本號,www為發行號/次版本號改變說明內核有重大變革,其偶數為穩定版本,奇數為尚在開發中的版本
第二章:基礎?
文件種類:-:txt,二進制/d:目錄/l:鏈接文件(link)/b:區塊設備文件/c:字元設備文件/p:管道
目錄結構:bin:可執行/boot:開機引導/dev:設備文件/etc:系統配置文件/lib:庫文件/mnt:設備掛載點/var:系統日誌/
命令:rmdir:刪除空目錄/find [path] [expression]/touch命令還可以修改指定文件的最近一次訪問時間/tar -czvf usr.tar.gz path/tar –zxvf usr.tar.gz/tar –cjvf usr.tar.bz2 path/tar –jxvf usr.tar.bz2
gcc:預處理:-g/I在頭文件搜索路徑中添加目錄,L在庫文件搜索路徑中
gdb:設置斷點:b/查看斷點信息:info
Makefile:make –f other_makefile/<:第一個依賴文件的名稱/@:目標文件的完整名稱/^:所有不重復的依賴文件/+:所有依賴文件(可能重復)
第三章:文件IO
read:read(fd, temp, size); /讀fd中長度為size的值到temp/返回0表示file為NULL
write:write(fd, buf, buf_size); /寫長度為buf_size的buf內容到fd中
lseek:lseek(fd, offset, SEEK_SET); /從文件開頭向後增加offset個位移量
unlink:從文件系統中刪除一個名字
open1:int open(const char * pathname, int flags, mode_t mode);/flags為讀寫方式/mode為許可權設置/O_EXCL:測試文件是否存在/O_TRUNC:若存在同名文件則刪除之並新建
open2:注意O_NONBLOCK
mmap.1:void *mmap(void *start, size_t length, int prot, int flags, int fd, off_t offsize);
mmap.2:mmap(start_addr, flength, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);
fcntl:上鎖/int fcntl(int fd, int cmd, struct flock * lock);/對誰;做什麼;設置所做內容
select:fd_max+1,回傳讀狀況,回傳寫狀況,回傳異常,select等待的時間/NULL為永遠等待/0為從不等待/凡需某狀況則用之,反則(fd_set *)NULL之
FD_*那幾個函數……
一般出錯則返回-1
第四章:文件與目錄
硬鏈接與符號鏈接?
chdir改變目錄
0:in/1:out/2:err
第五章:內存管理
可執行文件存儲時:代碼區、數據區和未初始化區
棧:by編譯器,向低址擴展,連續,效率高/堆:by程序員
/etc/syslog.conf,系統log記錄文件/優先順序為-20時最高
第六章:進程和信號
程序代碼、數據、變數、文件描述符和環境/init的pid為1
execl族:int execl(const char * path, const char * arg, ....);/path即可執行文件的路徑,一般為./最後一個參數以NULL結束
waitpid:waitpid(pid_t pid,int * status,int options);/option:一般用WNOHANG,沒有已經結束的子進程則馬上返回,不等待
kill:int kill(pid_t pid,int sig);/發送信號sig給pid
void (*signal(int signum, void(* handler)(int)))(int);/第一個參數被滿足時,執行handler/第一個參數常用:SIG_IGN:忽略信號/SIG_DFL:恢復默認信號
第七章:線程
sem_init(sem_t *sem, int pshared, unsigned int value)/pshared為0/value即初始值
第八章:管道
1:write/0:read
第九章:信號量、共享內存和消息隊列
臨界資源:操作系統中只允許一個進程訪問的資源/臨界區:訪問臨界資源的那段代碼
信號量:建立聯系(semget),然後初始化,PV操作,最後destroy
共享內存沒有提供同步機制
第十章:套接字
UDP:無連接協議,無主客端的區分/實時性
TCP:位元組流/數據可靠性/網路可靠性
數據報:SOCK_STREAM/SOCK_DGRAM
其它
管道一章的both_pipe即父子進程間的全雙工管道通訊
關繫到信號和互斥的伺服器-客戶端程序
線程一章的class的multi_thread文件夾下的thread8.c
int main(void)
{
int data_processed;
int file_pipes_1[2];
int file_pipes_2[2];
char buffer[BUFSIZ + 1];
const char some_data[] = "123";
const char ch2p[] = "this is the string from child to the parent!";
const char p2ch[] = "this is the string from parent to the child!";
pid_t fork_result;
memset(buffer,'\0',sizeof(buffer));
if(pipe(file_pipes_1) == 0){
if(pipe(file_pipes_2) == 0){
fork_result = fork();
switch(fork_result){
case -1:
perror("fork error");
exit(EXIT_FAILURE);
case 0://child
close(file_pipes_1[1]);
close(file_pipes_2[0]);
printf("in the child!\n");
read(file_pipes_1[0],buffer, BUFSIZ);
printf("in the child, read_result is \"%s\"\n",buffer);
write(file_pipes_2[1],ch2p, sizeof(ch2p));
printf("in the child, write_result is \"%s\"\n",ch2p);
exit(EXIT_SUCCESS);
default://parent
close(file_pipes_1[0]);
close(file_pipes_2[1]);
printf("in the parent!\n");
write(file_pipes_1[1], p2ch, sizeof(p2ch));
printf("in the parent, write_result is \"%s\"\n",p2ch);
read(file_pipes_2[0],buffer, BUFSIZ);
printf("in the parent, read_result is \"%s\"\n",buffer);
exit(EXIT_SUCCESS);
}
}
}
}
#ifndef DBG
#define DBG
#endif
#undef DBG
#ifdef DBG
#define PRINTF(fmt, args...) printf("file->%s line->%d: " \
fmt, __FILE__, __LINE__, ##args)
#else
#define PRINTF(fmt, args...) do{}while(0);
#endif
int main(void)
{
PRINTF("%s\n", "hello!");
fprintf(stdout, "hello hust!\n");
return 0;
}
#define N 5
#define MAX 5
int nput = 0;
char buf[MAX][50];
char *buffer = "";
char buf_r[100];
sem_t mutex,full,avail;
void *proctor(void *arg);
void *consumer(void *arg);
int i = 0;
int main(int argc, char **argv)
{
int cnt = -1;
int ret;
int nput = 0;
pthread_t id_proce[10];
pthread_t id_consume;
ret = sem_init(&mutex, 0, 1);
ret = sem_init(&avail, 0, N);
ret = sem_init(&full, 0, 0);
for(cnt = 0; cnt < 6; cnt ++ ){
//pthread_create(&id_proce[cnt], NULL, (void *)proctor, &cnt);
pthread_create(&id_proce[cnt], NULL, (void *)proctor, (void *)cnt);
}
pthread_create(&id_consume, NULL, (void *)consumer, NULL);
for(cnt = 0; cnt < 6; cnt ++){
pthread_join(id_proce[cnt], NULL);
}
pthread_join(id_consume,NULL);
sem_destroy(&mutex);
sem_destroy(&avail);
sem_destroy(&full);
exit(EXIT_SUCCESS);
}
void *proctor(void *arg)
{
while(1){
sem_wait(&avail);
sem_wait(&mutex);
if(nput >= MAX * 3){
sem_post(&avail);
//sem_post(&full);
sem_post(&mutex);
return NULL;
}
sscanf(buffer + nput, "%s", buf[nput % MAX]);
//printf("write[%d] \"%s\" to the buffer[%d]\n", (*(int*)arg), buf[nput % MAX],nput % MAX);
printf("write[%d] \"%s\" to the buffer[%d]\n", (int)arg, buf[nput % MAX],nput % MAX);
nput ++;
printf("nput = %d\n", nput);
sem_post(&mutex);
sem_post(&full);
}
return NULL;
}
void *consumer(void *arg)
{
int nolock = 0;
int ret, nread, i;
for(i = 0; i < MAX * 3; i++)
{
sem_wait(&full);
sem_wait(&mutex);
memset(buf_r, 0, sizeof(buf_r));
strncpy(buf_r, buf[i % MAX], sizeof(buf[i % MAX]));
printf("read \"%s\" from the buffer[%d]\n\n",buf_r, i % MAX);
sem_post(&mutex);
sem_post(&avail);
//sleep(1);
}
return NULL;
}
㈣ C語言命令行參數
int main(int argc, char * argv[])
{
.....
}
argc: 代表啟動程序時,命令行參數的個數。C和C++語言規定,可執行程序程序本身的文件名,也算是一個命令行參數,因此,argc的值至少是1.
argv[]:指針數組,其中的每個元素都是一個char* 類型的指針,該指針指向一個字元串,這個字元串里就存放著命令行參數。
例如,argv[0]指向的字元串就是第一個命令行參數,即可執行程序的文件名,argv[1]指向第二個命令行參數,argv[2]指向第三個命令行參數....。
#include <stdio.h>
int main( int argc, char * argv[])
{
int i;
for ( i = 0;i < argc; i++)
{
printf("%s ",argv[i]);
}
return 0;
}
windows下,將上面的程序編譯成sample.exe,然後在控制台窗口敲:
sample para1 para2 s.txt 5 "hello world"
上面有6個參數,雙引號為了包含空格作為一個參數。
輸出結果:
sample
para1
para2
s.txt
5
hello world
(4)c語言指令擴展閱讀:
main函數通常含有參數argc和argv,寫法通常如下:
int main(int argc,char *argv[])
int main(int argc,char **argv)
程序:
#include<stdio.h>
int main(int argc,char *argv[])
{
int i;
for(i=0;i<argc;i++)
printf("第 %d 個參數是 %s ",i+1,argv[i]);
return 0;
}
㈤ c語言運行一條指令要多少時間
這個需要分情況來看。
1.C語言源程序通過預處理然後編譯,產生匯編代碼,不同的匯編代碼和指令有不同的執行時間。
2.一個指令的執行時間,用其所需要的指令周期(執行一條指令所需要的時間)來衡量。對於單位元組指令,就是一個讀取-執行周期(fetch-execute cycle),對於多位元組指令,還需要更多的指令周期。
3.一個指令周期,一般是由若干個機器周期(完成一次基本操作需要的時間,比如獲取變數在RAM當中的地址)組成。
4.再一個,時鍾周期,這個可以形象一點地和通常所說的主頻聯系起來,比如CPU核心的主頻是2.5GHz,則時鍾周期為0.4ns,這個是計算機當中最小的時間計量單位。一個機器周期由若干個時鍾周期組成。
㈥ c語言的命令語句
#define可謂是從小用到大……(汗,誇張了點哈……)
你也可以不用#define,也可以作為一個全局變數定義嘛。
#define做為賦值語句一般用於為全局變數賦值,但卻不一定是常數(雖然一般是作為常數的)
。
不同的編譯和運行環境要求程序代碼在編寫上也有所不同,有時這樣的代碼會很多。寫程序的人希望這個程序在不做太多改變的情況下適應不同的環境,於是將那些適應不同系統的代碼都寫出來,用ifdef,else,endif分開,並用了一個「開關」,即#define
XXX。當系統環境符合
XXX
的時候,就帶著這一句編譯;當系統環境不符合
XXX
的時候,就刪除這一句。
當然還有其它用途,比如防止頭文件重復包含,用
#ifndef
XXX
#define
XXX
/*
頭文件的內容
*/
#endif
㈦ C語言中 空操作的指令是什麼
C語言中 空操作的指令是只由分號構成的語句
解釋:C語言都是以;結尾的,所以空操作直接打一個;就可以,
㈧ C語言中「語句」和「指令」有什麼區別
區別一:構成不一樣
1、C程序的執行部分是由語句組成的。 程序的功能也是由執行語句實現的。
2、指令可以使編譯器按不同的條件編譯不同的程序部分,因而產生不同的目標代碼文件。這對於程序的移植和調試是很有用的,尤其是針對於跨平台程序移植的時候。
區別二:實現功能不一樣
1、C程序語言可以實現多種程序結構,即順序結構、分支(選擇)結構、循環結構。
2、指令可以實現源代碼的部分編譯功能,可以根據表達式的值或者某個特定的宏來確定編譯條件,以決定編譯哪些代碼,不編譯哪些。
(8)c語言指令擴展閱讀
C語言表達式語句
表達式語句由表達式加上分號「;」組成。
其一般形式為:表達式;執行表達式語句就是計算表達式的值和執行副作用。
例如: x=y+z;a=520;賦值語句;
y+z;加法運算語句,但計算結果不能保留,無實際意義;
i++; 自增1語句,i值增1。
i++; 是先運算i後再加1。
++i; 是先把i值增1後運算。
包括空語句,函數調用語句在內都屬於表達式語句。
C語言條件編譯指令
1、#if指令
該指令檢測表達式值是否為真。如果表達式的值為真,則編譯後面的代碼直到出現 #else、#elif 或 #endif 為止,否則不編譯。
2、#endif指令
該指令用於終止 #if 指令。
3、#else指令
該指令用於 #if 指令之後,當前面的 #if 指令的條件不為真時,就編譯 #else 後面的代碼。
4、#elif指令
該指令綜合了 #else 和 #if 指令的作用。下面的示例代碼演示了 #if、#else、#elif 與 #endif 的組合使用情況。
㈨ C語言的全部命令
你是說關鍵字吧!
由ANSI標準定義的C語言關鍵字共32個 :
auto double int struct break else long switch
case enum register typedef char extern return union
const float short unsigned continue for signed void
default goto sizeof volatile do if while static
根據關鍵字的作用,可以將關鍵字分為數據類型關鍵字和流程式控制制關鍵字兩大類。
1 數據類型關鍵字
A基本數據類型(5個)
void :聲明函數無返回值或無參數,聲明無類型指針,顯式丟棄運算結果
char :字元型類型數據,屬於整型數據的一種
int :整型數據,通常為編譯器指定的機器字長
float :單精度浮點型數據,屬於浮點數據的一種
double :雙精度浮點型數據,屬於浮點數據的一種
B 類型修飾關鍵字(4個)
short :修飾int,短整型數據,可省略被修飾的int。
long :修飾int,長整形數據,可省略被修飾的int。
signed :修飾整型數據,有符號數據類型
unsigned :修飾整型數據,無符號數據類型
C 復雜類型關鍵字(5個)
struct :結構體聲明
union :共用體聲明
enum :枚舉聲明
typedef :聲明類型別名
sizeof :得到特定類型或特定類型變數的大小
D 存儲級別關鍵字(6個)
auto :指定為自動變數,由編譯器自動分配及釋放。通常在棧上分配
static :指定為靜態變數,分配在靜態變數區,修飾函數時,指定函數作用域為文件內部
register :指定為寄存器變數,建議編譯器將變數存儲到寄存器中使用,也可以修飾函數形參,建議編譯器通過寄存器而不是堆棧傳遞參數
extern :指定對應變數為外部變數,即在另外的目標文件中定義,可以認為是約定由另外文件聲明的韻蟮囊桓觥耙�謾?
const :與volatile合稱「cv特性」,指定變數不可被當前線程/進程改變(但有可能被系統或其他線程/進程改變)
volatile :與const合稱「cv特性」,指定變數的值有可能會被系統或其他進程/線程改變,強制編譯器每次從內存中取得該變數的值
2 流程式控制制關鍵字
A 跳轉結構(4個)
return :用在函數體中,返回特定值(或者是void值,即不返回值)
continue :結束當前循環,開始下一輪循環
break :跳出當前循環或switch結構
goto :無條件跳轉語句
B 分支結構(5個)
if :條件語句
else :條件語句否定分支(與if連用)
switch :開關語句(多重分支語句)
case :開關語句中的分支標記
default :開關語句中的「其他」分治,可選。
C 循環結構(3個)
for :for循環結構,for(1;2;3)4;的執行順序為1->2->4->3->2...循環,其中2為循環條件
do :do循環結構,do 1 while(2); 的執行順序是 1->2->1...循環,2為循環條件
while :while循環結構,while(1) 2; 的執行順序是1->2->1...循環,1為循環條件
以上循環語句,當循環條件表達式為真則繼續循環,為假則跳出循環。
㈩ C語言中「->」是什麼指令
在C中,->是獲得指針指向的復雜類型目標的成員的操作符。
例如聲明了一個結構體變數A,同時聲明了一個A的指針pA,那麼要獲得結構體變數A的成員n,就可以寫pA->n來完成。