有没有办法逐个字符遍历或从C中的char *中提取单个字符?
请考虑以下代码。现在哪个是获得个性化角色的最佳方式? 建议我不使用任何字符串函数的方法。
char *a = "STRING";
答案 0 :(得分:20)
另一种方式:
char * i;
for (i=a; *i; i++) {
// i points successively to a[0], a[1], ... until a '\0' is observed.
}
答案 1 :(得分:5)
知道char数组的长度,你可以用for循环遍历它。
for (int i = 0; i < myStringLen; i++)
{
if (a[i] == someChar)
//do something
}
请记住,char *可以用作C-Style字符串。字符串只是一个字符数组,因此您可以将其编入索引。
编辑:因为有人在评论时被问到,有关数组和指针的详细信息,请参阅此链接的第5.3.2节: http://publications.gbdirect.co.uk/c_book/chapter5/pointers.html
答案 2 :(得分:4)
size_t i;
for (i=0; a[i]; i++) {
/* do something with a[i] */
}
答案 3 :(得分:3)
喜欢这个。
char a1[] = "STRING";
const char * a2 = "STRING";
char * c; /* or "const char" for a2 */
for (c = aN; *c; ++c)
{
/* *c is the character */
}
此处N
可以是1
或2
。对于a1
,您可以修改a2
您不能修改的字符。请注意,不建议将字符串文字分配给char*
。
答案 4 :(得分:2)
int i=0;
while(a[i]!=0)/* or a[i]!='\0' */
{
// do something to a[i]
++i;
}
编辑:
您还可以使用strlen(a)
获取a
中的字符数。