當前位置:首頁 » 編程語言 » C語言字元串轉為函數調用
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

C語言字元串轉為函數調用

發布時間: 2022-08-21 06:58:33

1. c語言字元串處理函數有哪些

1、puts函數——輸出字元串的函數

一般的形式為puts(字元串組)

作用:將一個字元串輸出到終端。如,char一個string,並賦予初值。調用puts(string);進行字元串的輸出。

2、gets函數——輸入字元串的函數

一般的形式:gets(字元數組)

作用:從終端輸入一個字元串到字元數組,並且得到一個函數值成為字元數組的起始地址。

gets(str);

鍵盤輸入,,,,你懂得。

注意:puts和gets函數只能輸出或者輸入一個字元串。

3、strcat函數——字元串連接函數

一般的形式:strcat(字元數組1,字元數組2);

作用:把兩個字元串數組中字元串連接起來,把字元串2連接到字元串1的後面。

說明:字元數組1必須足夠大,以便容納連接後的新字元串。

4、strcpy/strncpy函數——字元串復制函數

一般形式:strcpy(字元數組1,字元串2);

作用:將字元串2復制到字元數組1中去。

如:char str1[10],str2[]="DongTeng";

strcpy(str1,str2);

執行後的結果為:你懂得

注意:

1. 不能用賦值語句直接將一個字元串常量或者字元數組直接給一個字元數組。

2. 用strncpy可以賦值指定的位置的字元。strncpy(str1,str2,3);將str2中的第3個字元復制到str1中。

5、strcmp函數——字元串比較函數

一般形式:strcmp(字元串1,字元串2);

作用:用來比較兩個字元串的差異。具有不同的比較規則。

6、strlen函數——測字元串長度的函數

一般形式:strlen(字元數組);

如:char str[10]="DongTeng";

printf("%d",strlen(str));

得到的結果是:5

7、strlwr函數——轉換為小寫的函數

一般形式:strlwr(字元串);

8、strupr函數——轉換為大寫的函數

一般形式:strupr(字元串)。

2. C語言字元串函數調用求教

key=getchar();//gets(&key);

3. C語言中如何編寫一個字元串復制函數,並在主函數中調用它。

#include<stdio.h>

char *custom_cpy(char *to,char *from);

int main(int argc,char *argv[]){

char *from = "i like c langanger";

char to[30];

char *ptr = custom_cpy(to,from);

printf("%s,%s ",ptr,to);

return 0;

}

char *custom_cpy(char *to,char *from){

if(to == NULL || from == NULL){

return NULL;

}

char *p = to;

for(;*from!='';from++,to++){

*to = *from;

}

*to = '';//拷貝完畢之後一定要加一個結束符號

return p;

}

(3)C語言字元串轉為函數調用擴展閱讀:

字元串相關函數應用:

1. 連接運算 concat(s1,s2,s3…sn) 相當於s1+s2+s3+…+sn。

例:concat(『11』,'aa』)='11aa』;

2. 求子串。 Copy(s,I,I) 從字元串s中截取第I個字元開始後的長度為l的子串。

例:(『abdag』,2,3)=』bda』;

3. 刪除子串。過程 Delete(s,I,l) 從字元串s中刪除第I個字元開始後的長度為l的子串。

例:s:=』abcde』;delete(s,2,3);結果s:=』ae』;

4. 插入子串。 過程Insert(s1,s2,I) 把s1插入到s2的第I個位置

例:s:=abc;insert(『12』,s,2);結果s:=』a12bc』;

5. 求字元串長度 length(s) 例:length(『12abc』)=5;

網路-字元串

4. C語言字元串函數調用

gfedcba
f是一個交換函數
p=str+strlen(str)/2+1;
p就指向了 str+4 就是 e
p-2 指向 c
f的效果就是
從e開始直到g
和前面的c到a互換

5. C語言中,如何將輸入的字元串作為調用的函數名

可以調用

例如
char str[100]={0};
gets(str);
if (strcmp(str,"mat x")==0)
{
mat(x);
}

大體上就是這樣

具體的 函數的參數什麼的 需要你自己從上面的字元串里解析

6. c語言,這個題怎麼調用字元串函數實現會這樣做,不會調用函數,求解

你這樣做是調用函數了,雖然用的是memcpy函數,但也是函數。

不調用函數的做法,是使用循環,逐字元復制,直到字元串結束符''。

voidnofunc(char*src,char*dest)
{
inti;

for(i=0;src[i]!='';i++)
dest[i]=src[i];
dest[i]='';
}

調用函數的做法,是使用strcpy()函數,而不是使用memcpy。

strcpy(dest,src);

這倆的區別在於,strcpy會把字元串結束符''復制過來,而memcpy則不會判斷是否結束,而是按指定的長度來復制。如果使用memcpy,你復制的長度必須是strlen+1才行。你這個程序,如果目的字元串不是剛剛好與源字元串長度相等的話,就能看出有錯誤。

char*src="abc";
chardest[100];

strcpy(dest,"123");/*目的字元串剛好也是3個字元*/
memcpy(dest,src,strlen(src));
printf("[%s] ",dest);/*如果這樣調用,結果是正常的,剛好是abc*/

strcpy(dest,"12345");
memcpy(dest,src,strlen(src));
printf("[%s] ",dest);/*如果這樣調用,結果是錯誤的,應該是abc45*/

/*而使用strcpy就不會有問題*/
strcpy(dest,"12345");
strcpy(dest,src);
printf("[%s] ",dest);/*這樣調用結果就是正確的abc*/

7. c語言怎麼將字元串轉換成對應函數

c語言是沒法把字元串轉換成對應函數的,c語言是結構化語言,程序怎麼執行在編譯時已經確定,沒法像c#之類的託管代碼高級語言能夠動態綁定或者叫後期綁定。因為託管代碼有運行時去選擇執行,而c語言編譯後的可執行文件為操作系統直接調用了,所以沒法動態綁定。

8. c語言編程 從鍵盤上輸入一個字元串通過函數調用的方法使該字元串翻轉 並輸出這個翻轉後的字元串

1 輸入字元串;

2 調用函數進行翻轉,可以通過將對稱位置字元交換值實現;

3 輸出結果。

代碼如下:

voidrevers(char*s)
{
char*p=s,c;
while(*p)p++;
p--;
while(p>s)
{
c=*p;
*p=*s;
*s=c;
}
}

intmain()
{
chars[100];
scanf("%s",s);
revers(s);
printf("%s",s);
}

9. c語言:字元串做為函數參數傳遞

1、值傳遞

void swap(int x,int y)

{ int temp = x;

x = y;

y = temp;

}void main()

{

int a = 10, b = 20;

swap(a, b);

}

執行後,並不會交換。

2、引用傳遞

void swap(int &x,int &y)

{ int temp = x;

x = y;

y = temp;

}void main()

{

int a = 10, b = 20;

swap(a, b);

printf("a=%d b=%d ", a, b);

}

執行後,發生交換。

3、指針傳遞

void swap(int *x,int *y)

{ int temp = *x; *x = *y; *y = temp;

}void main()

{

int a = 10, b = 20;

swap(&a, &b);

printf("a=%d b=%d ", a, b);

}

執行後,發生交換。

參數傳遞只有上面三種,但是如果加上數組,就會產生幾種新形式。

首先,明確數組型變數名本身只是該數組所佔存儲空間的首地址:

int a[3] = { 1, 2, 3 }; int *p = a; //等價於下行 //int *p = &a[0];

printf("%d", *p);

典型的數組做參數。

void fun(char s[]){ for (int i = 0; s[i] != ''; i++)

printf("%c", s[i]);

}void main()

{ char str[] = "Hello World!";

fun(str);

}

函數調用時,這里系統不會為形參分配數組存儲空間,而是僅僅分配一個存放數組地址(第一個元素地址)的存儲空間,此後,將實參數組的首地址傳遞給形參變數。

其實本質與下相同,只不過還是數組形式的(數組名代替指針)。

既然數組型變數名本身只是該數組所佔存儲空間的首地址,我們當然可以用指針做形參來接收數組實參。

void fun(char *p){ while (*p)

{

printf("%c", *p);

p++;

}

}void main()

{ char str[] = "Hello World!";

fun(str);

}

不過問題是如果這樣,無法把握數組結束(除非知道數組長度)。而對於字元數組(上例),由於字元串末尾有結束標志''(ascii碼正好是0),所以就很容易利用指針來判斷字元串是否結束。

(9)C語言字元串轉為函數調用擴展閱讀:

調用帶參數的函數:

在調用函數時,可以向其傳遞值,這些值被稱為參數。

這些參數可以在函數中使用。

可以發送任意多的參數,由逗號 (,) 分隔:

myFunction(argument1,argument2)。

當聲明函數時,請把參數作為變數來聲明:

function myFunction(var1,var2){這里是要執行的代碼}。

變數和參數必須以一致的順序出現。第一個變數就是第一個被傳遞的參數的給定的值,以此類推。

按值傳遞參數:

按值傳遞參數時,是將實參變數的值復制一個到臨時存儲單元中,如果在調用過程中改變了形參的值,不會影響實參變數本身,即實參變數保持調用前的值不變。

按值傳遞參數時,需要在參數名前加"ByVal"關鍵字。

按地址傳遞參數:

按地址傳遞參數時,把實參變數的地址傳送給被調用過程,形參和實參共用內存的同一地址。在被調用過程中,形參的值一旦改變,相應實參的值也跟著改變。

如果實參是一個常數或表達式,Visual Basic 6.0會按"傳值"方式來處理,按地址傳遞不需要"ByVal"關鍵字。

按數組傳遞參數:

在VB6.0中,允許使用數組作為實參傳遞到子過程的形參中,數組傳遞必須採用地址傳遞的方式來傳遞參數。數組參數在傳遞時應注意以下兩個方面:

① 在實參和形參列表中只寫數組名,忽略維數的定義,但圓括弧不能省,當數組作為參數傳遞時,系統將實參數組的起始地址傳給過程,使形參數組也具有與實參數組相同的起始地址,若參數是多維數組,每維以逗號分隔。

② 被調過程可分別通過Lbound和Ubound函數確定實參數組的下界和上界。

參考資料來源:網路-參數傳遞

參考資料來源:網路-字元串



10. C語言字元串轉換函數

你是不是想這樣啊
char s[]="4659789";
int num1=atoi (s);

atoi函數裡面當然可以用變數了

char num[]={4659789};
你定義的是一個數組大小隻有1的數組。
相當於
char num[1]={4659789};
數組中每個元素應該用逗號隔開,因為是char型的
所以應該這樣
char num[] = { '4','5','6','7','8','9','\0' };
或者
char num[] = "456789";