c語言測字元串長度
『壹』 c語言怎麼計算字元長度
#include
<stdio.h>
#include
<ctype.h>
#define
N
50
int
main()
{
int
chr=0,space=0,dig=0,other=0;
char
string[N];
char
*s;
printf("Please
input
the
string:
");
gets(string);
s=string;
while(*s!='\0')
{
if(isalpha(*s))
chr++;
else
if(isspace(*s))
space++;
else
if(isdigit(*s))
dig++;
else
other++;
s++;
}
printf("Result:\n");
printf("English
chars:
%d\n",chr);
printf("Space:
%d\n",space);
printf("Digit:
%d\n",dig);
printf("Others:
%d\n",other);
return
0;
}
用<ctype.h>會更加簡單明了一些,注意要用gets輸入字元串才可以包含空格,用scanf則不可以
『貳』 C語言求字元串長度的問題
你的代碼出現問題的原因是scanf("%s",&a);
,a是一個char類型的變數,系統為它分配了一個位元組的內存空間,但是你卻輸入了一個字元串到以a的地址為首地址的一段連續的內存空間里,這樣就出現了越界錯誤.但是printf函數並不檢查越界錯誤,它會按正常的方法執行,然後程序統計出長度,列印出來結果.但是返回到調用main函數的操作系統後,系統會發現越界錯誤,所以在結果顯示出來後才出錯.至於你說的輸入5個以下不會出錯,也許是偶然,也許跟你的編譯器有關.我用VS2005測試,只要輸入就會出錯。
如果你是只想求出輸入的字元串的長度而不要求保存輸入的字元串,下面的代碼更好。你的標准輸入緩沖區有多大,那麼它就可以求出多長的字元串的長度,不會有越界。
#include<stdio.h>
int
main()
{
int
len=0;
//getchar()函數從標准輸入設備(即鍵盤)接收一個字元,返回該字元的ASCII碼.因為回車被輸入時被轉換成換行符(LF,ASCII碼為10),所以getchar()返回10時就知道輸入結束了.
while(getchar()!=10)
len++;
printf("It's
length
is
%d.\n",len);
return
0;
}
『叄』 C語言判斷字元串的長度
char
array[]="094387fdhgkdladhladaskdh";字元串定義要加引號
這樣才會在串的最後加上'\0'
printf("\n");
這也要加引號
『肆』 c語言計算字元串的長度(用指針)
#include<cstdio>
int main()
{
char s[20];
char*p;
printf("please input a string(less than 20 character): ");
//scanf("%s",s);不能讀入空格
gets(s);
p=s;
while(*p!='