我找到了这个例子
int SizeofCharArray(char *phrase)
{
int size = 0;
int value = phrase[size];
while(value != 0)
{
value = phrase[size];
size++;
};
//printf("%i%s", size, "\n");
return size;
}
但是如何使用纯C计算字符串数组中的字母数?即使我不明白如何初始化字符串数组?!
谢谢!
答案 0 :(得分:1)
发布的代码质量很差。函数的名称SizeofCharArray
与描述不匹配,计算字符串数组中的字母数。
如果要返回数组中的字符数,请使用:
int SizeofCharArray(char *phrase)
{
int size = 0;
char* cp = phrase;
while( *cp != '\0')
{
size++;
cp++;
};
return size;
}
如果要返回数组中的字母数,请使用:
int isLetter(char c)
{
return (( c >= 'a' && c <= 'z' ) || ( c >= 'A' && c <= 'Z' ));
}
int GetNumberOfLetters(char *phrase)
{
int num = 0;
char* cp = phrase;
while( *cp != '\0')
{
if ( isLetter(*cp) )
{
num++;
}
cp++;
};
return num;
}
答案 1 :(得分:0)
这将计算c字符串中字母字符的数量:
#include <ctype.h>
int numberOfLetters(char *s)
{
int n = 0;
while (*s)
if (isalpha(*s++))
n++;
return n;
}
如果您想要实际的字符数,计算空格和数字等字符,只需使用strlen(s)
中的string.h
。
答案 2 :(得分:0)
要查找C字符串的长度,您可以使用strlen()
函数
#include<string.h>
char str[]="GJHKL";
const char *str1="hhkjj";
int len1=strlen(str)<<"\n";
int len2=strlen(str1);
答案 3 :(得分:0)
这不是特别好C.我没有给你一个char数组的大小 - 这是不可能确定你是否丢失了这些信息。它给你的是一个以null结尾的char数组(AKA是一个c字符串)的大小,它通过对字符进行计数直到找到空终止符(0
字节或{{1}为止这样做。 })。事实上,你最重要的是一个不是特别好的strlen实现(strlen是一个标准的库函数,做同样的事情 - 确定一个以null结尾的char数组的大小)
我相信下面的内容应该是C-ish实现同样的事情:
'\n'
它返回size_t strlen(const char *s){
const char* ptr = s;
for(; *ptr; ++ptr); //move the pointer until you get '\0'
return ptr-s; //return the difference from the original position (=string length;)
}
(64位无符号int,如果你在64位机器上,32位在32台机器上,所以它可以在任意长的字符串上工作,只要它们适合内存)并且它也声明它不会修改它测量的数组(size_t
表示你保证不会用它来改变指向它的指针。)