你可以用一段非常喊的代码来完成它,其中包含一些功能:
#include <stdio.h>
#include <string.h>
int main(void)
{
char s[24];
fgets(s,24,stdin);
if( s[strlen(s)-1] == '\n'){
s[strlen(s)-1] = '\0';
}
printf("%lu\n",strlen(s));
return 0;
}
你不应该使用scanf。因为与空间相遇,它停止了。而且使用scanf()是不安全的。fgets() 是一个更好的选择。
经 GCC 和 Linux 测试。
更新:感谢@wildplasser,我的代码中有一个错误。修复 bug 后,没有 string.h 的新代码是:
#include <stdio.h>
size_t my_strlen(char * str){
size_t length = 0;
while( str[length++] != '\0' ){;}
return length-1;
}
int main(void)
{
char s[24];
size_t len=0;
if( fgets(s,24,stdin) == NULL ){
printf("Error in reading string.\n");
return -1;
}
len = my_strlen(s);
if( len > 0 && s[len-1] == '\n'){
--len;
}
printf("%zd\n",len);
return 0;
}