本文目錄一覽:
- 1、C語言中如何調用一個函數輸入字符串.這個函數怎麼寫
- 2、C語言關於字符串的操作函數有哪些
- 3、C語言子函數調用 字符串問題
- 4、C語言中,主函數輸入了一個字符串,怎樣在函數調用里也使用這個字符串?
- 5、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