哪里出问题了?
#include <stdio.h>
#include <string.h>
int main(int argc, char* argv[])
{char a[18];int i,k;
for(i=0;(a[i]=getchar())=='\n';i++)
{putchar(a[i]);}
k=strlen(a);
printf("字符串长度为:%d\n",k);
return 0;
}
输出总是为23。
[解决办法]
#include <stdio.h>
#include <string.h>
int main(int argc, char* argv[])
{
char a[18];int i,k;
for(i=0; ;i++)
{
a[i]=getchar();
if(a[i]=='\n')
break;
putchar(a[i]);
}
k=strlen(a);//问题在这里,因为没有字符串末尾没有置0
printf("字符串长度为:%d\n",i);
return 0;
}
#include <stdio.h>
#include <string.h>
int main()
{
char a[18];int i,k;
for(i=0;;i++)
{
a[i] = getchar();
if(a[i] == '\n')
break;
putchar(a[i]);
}
a[i] = '\0';
k=strlen(a);
printf("字符串长度为:%d\n",k);
return 0;
}
#include <stdio.h>
#include <string.h>
int main(int argc, char* argv[])
{
char a[18];
int i,k;
for(i=0; (a[i]=getchar()) != '\n' && i < 17; i++)
{
putchar(a[i]);
}
a[i] = '\0';
k = (int)strlen(a);
printf("\n字符串长度为:%d\n", k);
return 0;
}