尝试计算C中字符串中有多少个字符

尝试计算C中字符串中有多少个字符,c,string,reverse,C,String,Reverse,这是我上面的代码。s[]是我试图反转的字符串;请帮忙!感谢使用'\0'测试空终止字符 void reverse(char s[]) { int i; int len = 0; for (i=0; s[i] != '0'; i++) { len = len + 1; } C中的字符串只是以null或\0字符结尾的字符数组 void reverse(char s[]) { int i; int len = 0; for (i=0;

这是我上面的代码。s[]是我试图反转的字符串;请帮忙!感谢使用
'\0'
测试空终止字符

void reverse(char s[]) {
    int i;
    int len = 0;
    for (i=0; s[i] != '0'; i++) {
      len = len + 1;
    }

C
中的
字符串
只是以
null
\0
字符结尾的字符数组

void reverse(char s[]) {
    int i;
    int len = 0;
    for (i=0; s[i] != '0'; i++) {
      len = len + 1;
    }
更改您的条件
s[i]!='0'
,用于检查索引
i
处的字符是否为空

使用

for (i=0; s[i] != '\0'; i++) {
  len = len + 1;
}
在string.h标题中。您也可以使用

strrev(string1,string2)
从同一标题中查找长度。

void reverse(char s[]){
strlen(string1)
尺寸i,j; 对于(i=0;s[i]!='\0';++i) ; 如果(i<2) 回来 对于(j=0;j<--i;++j){ char c=s[i]; s[i]=s[j]; s[j]=c; } }
,但是网络上有许多可用的实现。我发现了一个:

#包括
char*strev(char*str)
{
字符*p1,*p2,c;
如果(!str | |!*str)
返回str;
对于(p1=str,p2=str+strlen(str)-1;p2>p1;++p1,--p2)
{
c=*p1;
*p1=*p2;
*p2=c;
}
返回str;
}

请注意,这会修改给定的字符串,并在适当的位置执行相反的操作。

问题是什么?您缺少最后一个右大括号
}
,并且您确实有问题要问吗?这是对。为什么不使用一个临时变量并将内存访问次数减半呢?正如我在互联网站上所说的那样:你说得对,这完全没有必要。我将进行编辑以使用一个干净的交换。(尽管我建议
尺码I,j;
)当然可以。我改了。
#include <string.h>

char *strrev(char *str)
{
    char *p1, *p2, c;

    if (! str || ! *str)
        return str;
    for (p1 = str, p2 = str + strlen(str) - 1; p2 > p1; ++p1, --p2)
    {
        c = *p1;
        *p1 = *p2;
        *p2 = c;
    }
    return str;
}