c語言子函數調用字符串,c語言子函數調用舉例

本文目錄一覽:

C語言中如何調用一個函數輸入字符串.這個函數怎麼寫

#include string.h

#include stdio.h

main()

{char a[100];

gets(a);

printf(“%s\n”,a);

}

gets()函數用來從標準輸入設備(鍵盤)讀取字符串直到換行符結束,但換行符會被丟棄,然後在末尾添加’\0’字符。其調用格式為: gets(s); 其中s為字符串變量(字符串數組名或字符串指針)。 gets(s)函數與scanf(“%s:”,s)/* scanf(“%s”,s) */相似,但不完全相同,使用scanf(“%s”,s);函數輸入字符串時存在一個問題,就是如果輸入了空格會認為字符串結束,空格後的字符將作為下一個輸入項處理,但gets()函數將接收輸入的整個字符串直到遇到換行為止。

要函數就這樣:

#include string.h

#include stdio.h

void sr(char *a)

{ gets(a);

}

main()

{char a[100];

sr(a);

printf(“%s\n”,a);

}

哦哦O(∩_∩)O^_^

C語言關於字符串的操作函數有哪些

string.h頭文件中包含的字符串函數

void *memcpy(void *dest, const void *src, size_t n);//將n字節長的內容從一個內存地址複製到另一個地址;如果兩個地址存在重疊,則最終行為未定義

void *memmove(void *dest, const void *src, size_t n);//將n字節長的內容從一個內存地址複製到另一個地址;與memcpy不同的是它可以正確作用於兩個存在重疊的地址

void *memchr(const void *s, char c, size_t n);//在從s開始的n個字節內查找c第一次出現的地址並返回,若未找到則返回NULL

int memcmp(const void *s1, const void *s2, size_t n);//對從兩個內存地址開始的n個字符進行比較

void *memset(void *, int, size_t);//用某種字節內容覆寫一段內存空間

char *strcat(char *dest, const char *src);//在字符串dest之後連接上src

char *strncat(char *dest, const char *src, size_t n);//從src截取n個字符連接在字符串dest之後,返回dest字符串

char *strchr(const char* str, int ch);//從字符串str頭開始查找字符ch首次出現的位置

char *strrchr(const char* str,int ch);//從字符串str尾開始查找字符ch首次出現的位置

int strcmp(const char *, const char *);//基於字典順序比較兩個字符串

int strncmp(const char *, const char *, size_t);//基於字典順序比較兩個字符串,最多比較n個字節

int strcoll(const char *, const char *);//基於當前區域設置的字符順序比較兩個字符串

char *strcpy(char* str1, const char* str2);//將str2拷貝給str1

char *strncpy(char* str1, const char* str2, size_t n);//截取str2的n個字符拷貝給str1

char *strerror(int);//返回錯誤碼對應的解釋字符串,參見errno.h(非線程安全函數)

size_t strlen(const char *);//返回一個字符串的長度

size_t strspn(const char *s, const char *strCharSet);//從字符串s的起始處開始,尋找第一個不出現在strCharSet中的字符,返回其位置索引值。換句話說,返回從字符串s的起始位置的完全由strCharSet中的字符構成的子串的最大長度。strspn為string span的縮寫。不支持多字節字符集。

size_t strcspn(const char *s, const char *strCharSet);//從字符串s的起始處開始,尋找第一個出現在strCharSet中的字符,返回其位置索引值。換句話說,返回從字符串s的起始位置的完全由不屬於strCharSet中的字符構成的子串的最大長度。strcspn為string complement span的縮寫。不支持多字節字符集。

char *strpbrk(const char *s, const char *strCharSet);//在字符串s中查找strCharSet中任意字符第一次出現的位置的指針值。strpbrk為string pointer break縮寫。不支持多字節字符集。

char *strstr(const char *haystack, const char *needle);//在字符串haystack中查找字符串needle第一次出現的位置,heystack的長度必須長於needle

char *strtok(char *strToken, const char *strDelimit );//將一個字符串strToken依據分界符(delimiter)分隔成一系列字符串。此函數非線程安全,且不可重入;但MSVC實現時使用了thread-local static variable因而是線程安全的單仍然是不可重入,即在單線程中不能對兩個源字符串交替調用該函數來分析token,應當對一個字符串分析完成後再處理別的字符串。

size_t strxfrm(char *dest, const char *src, size_t n);//根據當前locale轉換一個字符串為strcmp使用的內部格式

C語言子函數調用 字符串問題

1,樓上說得正確

printf(“輸出文本文件:”);

// 這句後面增加:

while ((c=getchar())!=’\n’ c!=EOF );

//目的是清空輸入緩衝區。

2,加密算法是正確的

int op,i;

char c,outcome[30];

printf(“請輸入操作要求:(0為加密,!0為解密):\n”);

scanf(“%d”,op);

printf(“請輸入文本文件:\n”);

i=0;

printf(“輸出文本文件:”);

while ((c=getchar())!=’\n’ c!=EOF );

while((c=getchar())!=’\n’)

{

if(op)

outcome[i]=decrpt(c);

else

outcome[i]=encrpt(c);

printf(“%c”,outcome[i]);

i++;

}

printf(“\n”);

//while((c=getchar())!=’\n’)

char a[27] = “abcdefghijklmnopqrstuvwxyz”;

char A[27] = “ABCDEFGHIJKLMNOPQRSTUVWXYZ”;

for(int i = 0; i 27; i++)

{

printf(“the old char is [%c]”, a[i]);

printf(“— the encrpt char is [%c] \n”, encrpt(a[i]));

}

for(int i = 0; i 27; i++)

{

printf(“the old char is [%c]”, A[i]);

printf(“— the encrpt char is [%c] \n”, encrpt(A[i]));

}

printf(“\n”);

getchar();

C語言中,主函數輸入了一個字符串,怎樣在函數調用里也使用這個字符串?

函數裡面定義的變量只能在這個函數內部使用……因此main函數定義的 l 和s不能在count裡面用……

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

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

不調用函數的做法,是使用循環,逐字符複製,直到字符串結束符’\0’。

void nofunc(char *src, char *dest)

{

    int i;

    for (i=0; src[i] != ‘\0’; i++)

        dest[i] = src[i];

    dest[i] = ‘\0’;

}

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

    strcpy(dest, src);

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

   char *src = “abc”;

   char dest[100];

   strcpy(dest, “123”); /* 目的字符串剛好也是3個字符 */

   memcpy(dest, src, strlen(src));

   printf(“[%s]\n”, dest);  /* 如果這樣調用,結果是正常的,剛好是abc */

   strcpy(dest, “12345”);

   memcpy(dest, src, strlen(src));

   printf(“[%s]\n”, dest);  /* 如果這樣調用,結果是錯誤的,應該是abc45 */

   /* 而使用strcpy就不會有問題 */

       strcpy(dest, “12345”);

       strcpy(dest, src);

       printf(“[%s]\n”, dest);  /* 這樣調用結果就是正確的abc */

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/154226.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-15 03:26
下一篇 2024-11-15 03:26

相關推薦

  • Python字符串寬度不限制怎麼打代碼

    本文將為大家詳細介紹Python字符串寬度不限制時如何打代碼的幾個方面。 一、保持代碼風格的統一 在Python字符串寬度不限制的情況下,我們可以寫出很長很長的一行代碼。但是,為了…

    編程 2025-04-29
  • Python中將字符串轉化為浮點數

    本文將介紹在Python中將字符串轉化為浮點數的常用方法。在介紹方法之前,我們先來思考一下這個問題應該如何解決。 一、eval函數 在Python中,最簡單、最常用的將字符串轉化為…

    編程 2025-04-29
  • Java判斷字符串是否存在多個

    本文將從以下幾個方面詳細闡述如何使用Java判斷一個字符串中是否存在多個指定字符: 一、字符串遍歷 字符串是Java編程中非常重要的一種數據類型。要判斷字符串中是否存在多個指定字符…

    編程 2025-04-29
  • AES加密解密算法的C語言實現

    AES(Advanced Encryption Standard)是一種對稱加密算法,可用於對數據進行加密和解密。在本篇文章中,我們將介紹C語言中如何實現AES算法,並對實現過程進…

    編程 2025-04-29
  • 學習Python對學習C語言有幫助嗎?

    Python和C語言是兩種非常受歡迎的編程語言,在程序開發中都扮演着非常重要的角色。那麼,學習Python對學習C語言有幫助嗎?答案是肯定的。在本文中,我們將從多個角度探討Pyth…

    編程 2025-04-29
  • Python學習筆記:去除字符串最後一個字符的方法

    本文將從多個方面詳細闡述如何通過Python去除字符串最後一個字符,包括使用切片、pop()、刪除、替換等方法來實現。 一、字符串切片 在Python中,可以通過字符串切片的方式來…

    編程 2025-04-29
  • Python被稱為膠水語言

    Python作為一種跨平台的解釋性高級語言,最大的特點是被稱為”膠水語言”。 一、簡單易學 Python的語法簡單易學,更加人性化,這使得它成為了初學者的入…

    編程 2025-04-29
  • OpenJudge答案1.6的C語言實現

    本文將從多個方面詳細闡述OpenJudge答案1.6在C語言中的實現方法,幫助初學者更好地學習和理解。 一、需求概述 OpenJudge答案1.6的要求是,輸入兩個整數a和b,輸出…

    編程 2025-04-29
  • Python按位運算符和C語言

    本文將從多個方面詳細闡述Python按位運算符和C語言的相關內容,並給出相應的代碼示例。 一、概述 Python是一種動態的、面向對象的編程語言,其按位運算符是用於按位操作的運算符…

    編程 2025-04-29
  • Python如何將字符串1234變成數字1234

    Python作為一種廣泛使用的編程語言,對於數字和字符串的處理提供了很多便捷的方式。如何將字符串“1234”轉化成數字“1234”呢?下面將從多個方面詳細闡述Python如何將字符…

    編程 2025-04-29

發表回復

登錄後才能評論