A函數(shù)的源碼可控嗎?如果可控,把對(duì)B函數(shù)的調(diào)用改成對(duì)新實(shí)現(xiàn)的調(diào)用就行了。
成都創(chuàng)新互聯(lián)公司是網(wǎng)站建設(shè)專家,致力于互聯(lián)網(wǎng)品牌建設(shè)與網(wǎng)絡(luò)營(yíng)銷,專業(yè)領(lǐng)域包括成都網(wǎng)站制作、成都網(wǎng)站建設(shè)、外貿(mào)營(yíng)銷網(wǎng)站建設(shè)、電商網(wǎng)站制作開發(fā)、微信平臺(tái)小程序開發(fā)、微信營(yíng)銷、系統(tǒng)平臺(tái)開發(fā),與其他網(wǎng)站設(shè)計(jì)及系統(tǒng)開發(fā)公司不同,我們的整合解決方案結(jié)合了恒基網(wǎng)絡(luò)品牌建設(shè)經(jīng)驗(yàn)和互聯(lián)網(wǎng)整合營(yíng)銷的理念,并將策略和執(zhí)行緊密結(jié)合,且不斷評(píng)估并優(yōu)化我們的方案,為客戶提供全方位的互聯(lián)網(wǎng)品牌整合方案!
如果A函數(shù)不是自己寫的(源碼不可控),會(huì)麻煩一些。例如,在支持指針的語言上,可以修改B函數(shù)入口部分的匯編代碼,jmp到自己的新實(shí)現(xiàn)。要求B函數(shù)和你的實(shí)現(xiàn)原型必須完全相同。
這個(gè)無法交換數(shù)據(jù)。
C語言函數(shù)參數(shù)的基本規(guī)則是值傳遞,所以傳遞時(shí)只能實(shí)現(xiàn)實(shí)參向形參的單向的、值的傳遞。這就是為什么需要使用指針才能實(shí)現(xiàn)值交換的原因。
#include"stdio.h"int swap(int *a,int *b){int temp;temp=*a;*a=*b;*b=temp;}
main(){int x,y;printf("請(qǐng)輸入x與y的值,用空格隔開\n");scanf("%d%d",x,y);printf("x=%d,y=%d\n",x,y);swap(x,y);printf("交換后\nx=%d,y=%d\n",x,y);}
擴(kuò)展資料:
C語言是一門通用計(jì)算機(jī)編程語言,廣泛應(yīng)用于底層開發(fā)。C語言的設(shè)計(jì)目標(biāo)是提供一種能以簡(jiǎn)易的方式編譯、處理低級(jí)存儲(chǔ)器、產(chǎn)生少量的機(jī)器碼以及不需要任何運(yùn)行環(huán)境支持便能運(yùn)行的編程語言。
盡管C語言提供了許多低級(jí)處理的功能,但仍然保持著良好跨平臺(tái)的特性,以一個(gè)標(biāo)準(zhǔn)規(guī)格寫出的C語言程序可在許多電腦平臺(tái)上進(jìn)行編譯,甚至包含一些嵌入式處理器(單片機(jī)或稱MCU)以及超級(jí)電腦等作業(yè)平臺(tái)。
二十世紀(jì)八十年代,為了避免各開發(fā)廠商用的C語言語法產(chǎn)生差異,由美國(guó)國(guó)家標(biāo)準(zhǔn)局為C語言制定了一套完整的美國(guó)國(guó)家標(biāo)準(zhǔn)語法,稱為ANSI C,作為C語言最初的標(biāo)準(zhǔn)。目前2011年12月8日,國(guó)際標(biāo)準(zhǔn)化組織(ISO)和國(guó)際電工委員會(huì)(IEC)發(fā)布的C11標(biāo)準(zhǔn)是C語言的第三個(gè)官方標(biāo)準(zhǔn),也是C語言的最新標(biāo)準(zhǔn),該標(biāo)準(zhǔn)更好的支持了漢字函數(shù)名和漢字標(biāo)識(shí)符,一定程度上實(shí)現(xiàn)了漢字編程。
C語言是一門面向過程的計(jì)算機(jī)編程語言,與C++,Java等面向?qū)ο蟮木幊陶Z言有所不同。其編譯器主要有Clang、GCC、WIN-TC、SUBLIME、MSVC、Turbo C等。
參考資料:百度百科-C語言
交換函數(shù)很好寫。
比較難的讀文件。文件格式 與 讀語句要 相配。 特別是 多余 的 空行和回車鍵。
調(diào)試時(shí)用 printf 語句 檢查 讀得對(duì)不對(duì)。
fgets() 函數(shù)可用來讀整行的字符串,含回車鍵。
#include stdio.h
#includestdlib.h
void jh(char *a, char *b){
char x[100];
strcpy(x,a),strcpy(a,b),strcpy(b,x);
}
int main(){
FILE *fp;
int n,i,j;
char a[100];
char b[100];
char ch;
if((fp=fopen("2.2.txt","r"))==NULL){
printf("Error");
exit(0);
}
fgets(a,100,fp);
sscanf(a,"%d",n);
//printf("n=%d\n",n);
for(j=1;j=n;j++){
fgets(a[0],100,fp);
//printf("read a: %s",a);
fgets(b[0],100,fp);
// printf("read b: %s",b);
printf("Case %d\n",j);
jh(a,b);
printf("%s",a);
printf("%s",b);
fgets(a[0],100,fp); // 假定2組數(shù)間只有一個(gè)空白行,則用它跳過。
}
fclose(fp);
return 0;
}