c語言字元串出現次數
以下是 C 語言實現統計字元串 s 在字元串 str 中出現的次數的程序:
```c
#include <stdio.h>
#include <string.h>
// 統計字元串 s 在字元串 str 中出現的次數
int countSubstring(char str[], char s[]) {
int n = strlen(str); // 獲取字元串 str 的長度
int m = strlen(s); // 獲取字元串 s 的長度
int count = 0; // 計數器,初始化為 0
for (int i = 0; i <= n - m; i++) {
// 檢查字元串 str 中以 i 開頭、長度為 m 的子串是否等於 s
if (strncmp(str + i, s, m) == 0) {
count++; // 如果相等,則計數器加 1
}
}
return count;
}
int main() {
char str[100], s[100];
printf("請輸入兩個字元串:");
scanf("%s%s", str, s);
int count = countSubstring(str, s);
printf("%s 在 %s 中出現的次數是:%d\n", s, str, count);
return 0;
}
```
在上述代碼中,我們首先定義了一個 `countSubstring()` 函數,該函數接受兩個字元串作為參數,並返回字元串 `s` 在字元鉛喚串 `str` 中出現的次數。在函數內部,我們使用一個循環依次檢查 `str` 中每個長度為 `m` 的子串是否等於 `s`,如果相等,則計數器加 1。需要注意的是,在比較子串是否相等時,我肢激毀們歷備使用了 `strncmp()` 函數,它可以指定要比較的字元數,避免了因為字元串長度不同而導致的錯誤。
在 `main()` 函數中,我們首先使用 `scanf()` 函數獲取用戶輸入的兩個字元串,並將其保存到字元數組 `str` 和 `s` 中。然後,我們調用 `countSubstring()` 函數,並傳入兩個字元串作為參數,以獲取字元串 `s` 在字元串 `str` 中出現的次數。最後,我們輸出結果到控制台中。
需要注意的是,在實際應用中,可能需要對用戶輸入進行驗證和處理,以確保程序的健壯性和安全性。另外,也可以使用其他方法(如標准庫函數)來實現統計字元串出現次數的演算法。
❷ C語言 輸入一個字元串(包含空格),統計每個字元出現的次數和總數(包含空格的次數),並且找出
#include <stdio.h>
int main()
{
unsigned char s[200],a[128]={0},i;
int max=0,maxc;
gets(s);
for(i=0;s[i];i++)
{
a[s[i]]++;
if(a[s[i]]>max)
{
max=a[s[i]];
maxc=s[i];
}
}
for(i=0;i<127;i++)
if(a[i]>0)printf("%c: %d ",i,a[i]);
printf("max:%c--%d times. ",maxc,a[maxc]);
system("pause");
return 0;
}
❸ 用C語言編程:在顯示器上輸入一段字元串,並統計出現字元的個數和各個字元出現的次數
#include <stdio.h>
void main()
{
char c;
int i,letters=0,num[26]={0}; //字元的個數, 26個字元個數初始化為0
printf("請輸入一段字元串:\n");
while((c=getchar())!='\n')
{
if(c>='a'&&c<='z'||c>='A'&&c<='Z')
{
letters++;
if(c>='a'&&c<='z') num[c-'a']++;
if(c>='A'&&c<='Z') num[c-'A']++;
}
}
printf("字元的個數:%d\n",letters);
printf("每個字元出現的次數:\n");
for(i=0;i<26;i++)
{
if(num[i]>0)
printf("字元%c:%d次 ",i+'a',num[i]);
}
}
❹ c語言統計字元串中每個字元出現的次數
#include<stdio.h>
#include<stdlib.h>
int findsub(char*src,char*s)
{
char*ptr=src,*p=s;//定義兩個指針
char*ptr2=src+strlen(src),*prev=NULL;//ptr2為src的末位置指針
int len=strlen(s),n=0;//子串的長度和計數器
for(;*ptr;ptr++)//循環整個串
{
if(ptr2-ptr<len)//如果一開始子串就大於src,則退出
break;
for(prev=ptr;*prev==*p;prev++,p++)//尋找第一個相等的位置,然後從此位置開始匹配子串
{
if(*(p+1)==0||*(p+1)==10)//如果已經到了子串的末尾
{
n++;//自增
p=s;//重新指向子串
break;//退出
}
}
}
return n;
}
int main(void)
{
char a[81],b[81];//定義兩個字元數組
printf("輸入原字元串:");
fgets(a,81,stdin);//輸入
printf("輸入子字元串:");
fgets(b,81,stdin);
printf("找到:%d ",findsub(a,b));
system("pause");
return 0;
}
(4)c語言字元串出現次數擴展閱讀:
①printf()函數是格式化輸出函數,一般用於向標准輸出設備按規定格式輸出信息。
格式輸出,它是c語言中產生格式化輸出的函數(在stdio.h中定義)。用於向終端(顯示器、控制台等)輸出字元。格式控制由要輸出的文字和數據格式說明組成。
要輸出的文字除了可以使用字母、數字、空格和一些數字元號以外,還可以使用一些轉義字元表示特殊的含義。
簡單點理解就是,在一段程序中你正確使用該函數,可以在該程序運行的時候輸出你所需要的內容。
②printf函數是一個標准庫函數,它的函數原型在頭文件「stdio.h」中。但作為一個特例,不要求在使用printf函數之前必須包含stdio.h文件。
printf()函數的調用格式為:printf("<格式化字元串>",<參量表>)。
其中格式化字元串用於指定輸出格式。格式控制串可由格式字元串和非格式字元串兩種組成。