为什么 strlen() 不返回精确值?
例如,当我输入 123 时,它返回 2。对于 12345,它返回 1。为什么?
#include<stdio.h>
#include<string.h>
int main()
{
long int ui,remainder,i=0,len;
char binary[20];
scanf("%ld",&ui);
while(ui!=0) {
remainder=ui%2;
binary[i]=(char)remainder;
printf("%d ",remainder);
ui=ui/2;
i++;
}
binary[i]='\0';
printf("len is %ld\n",strlen(binary));
for(i=len-1;i>=0;i--) printf("%d",binary[i]);
return 0;
}
最佳答案
strlen
返回字符数组的长度,直到在其中找到字符'\0'
(数值为0
) .您的 binary
数组是字符数组,但在存储数值 0
和 1
时,您将它们视为整数。在计算其长度时,strlen
在找到您编写的第一个 0
时停止。
要得到你需要的答案,将binary
定义改为char binary[20] = { 0 };
,保存剩余
值作为 ASCII 字符 (binary[i] = '0' + (char)remainder;
),并将它们打印为字符 printf("%c ",binary[i]);
关于c - 为什么 strlen() 每次都返回 2 或 1?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36800440/