在C中查找字符串的长度(不使用strlen)
下面的代码不会打印任何内容 –
int main() { char *input = "This is a string"; find_length(input); return 0; } void find_length(char *input){ printf("%s", input); int length = 0; while(input[length]!='\0'); { length++; printf("%i", length); } }
循环后面有一个额外的分号:
while(input[length]!='\0'); ^ does not belong here!!!
所以它陷入无限循环。 摆脱它。
此外,可能存在流缓冲。 尝试添加一些\n
。 或者调用fflush(stdout)
来刷新输出流。
void find_length(char *input){ printf("%s\n", input); int length = 0; while(input[length]!='\0') // remove ; { length++; printf("%i\n", length); } }
是的,但由于它不打印换行符,缓冲区在程序退出之前不会被刷新,并且最终会在同一行上显示shell提示符。 有些人有回车的shell提示,这会覆盖程序输出。
改变这个:
printf("...", ...);
对此:
printf("...\n", ...);
以下是解决方案。
#include int main() { char str[100]; printf("Enter a string: "); printf( "\rLength is: %d", printf("Entered string is: %s\n", gets(str)) - 20); return 0; }
在上面的程序中,gets()返回输入的字符串。 我们使用第一个printf打印长度。 第二个printf()调用gets()并使用gets()的返回值打印输入的字符串,它还打印20个额外的字符用于打印“输入的字符串是:”和“\ n”。 这就是为什么我们从第二个printf的返回值中减去20并得到长度。
增加length
变量或删除分号到while循环。
尝试,
void find_length(char *input){ int length = 0; /* declaration */ printf("%s", input); while(input[length++]!='\0'); printf("%i", length); } /* OR */ void find_length(char *input){ int length = 0; while(input[length]!='\0') { length++; } printf("%i", length); }
我猜其他post会指出你正确的答案。
但我只想在这里留下一个注释。 如果find_length()
返回字符串的长度( size_t
或者它也可以是int
)而不是void
OTOH,你可以看看strlen()
的各种其他实现。 希望能帮助到你!
#include // array version int strlen1(char a[]) { int len = 0; while (a[len]) len++; return len; } // pointer version // *p++ = dereference the pointer value and then // increment the pointer to the next memory location int strlen2(char *p) { int len = 0; while (*p++) len++; return len; /* int *q = p; while (*p); p++; return pq; */ } int main() { char s[] = "test string"; char *p = "another string"; printf("strlen1(%s) = %d \n", s, strlen1(s)); printf("strlen1(%s) = %d \n", p, strlen1(p)); printf("strlen2(%s) = %d \n", s, strlen2(s)); printf("strlen2(%s) = %d \n", p, strlen2(p)); return 0; }
查找给定字符串长度的简便方法
int strLength(const char *_array) { int str_len=0; while(*(_array++)) str_len++; return str_len; }
这个问题很老但是……为什么你要创建一个循环来获取字符串的长度,因为printf
可以通过说明符%n
来做到这一点:
#include int main(int argc, char* argv[]) { char *input = "This is a string"; int length=0; printf("%s%n",input,&length); printf("\nThe length of \"%s\" is %d",input, length); return 0; }
或者您甚至可以在打印字符串之后得到printf
函数的输出:
length=printf("%s",input); printf("\nThe length of \"%s\" is %d",input, length);
C++, Count string without functions #include #include using namespace std; int main() { string leng; cout << "Enter String for Count" << endl; cin >> leng; int a = 0; while (leng[a++]); { cout << a; } }
这是你的答案:(len将是长度的字符串,字符串是字符串!)
int len; for(len=0; string[len]!='\0'; len++); printf("Length of string is %i", len);
main(int argc, char *argv[]) { char *input = "Enter Any string"; printf("your Entered String is: %s\n", input); int length = 0; while (input[length] != '\0') { length++; } printf("length is : %i\n", length); }