读书人

本人初学者询问这段关于字符串长度程

发布时间: 2012-05-21 18:04:41 作者: rapoo

本人菜鸟,询问这段关于字符串长度程序的问题
#include <stdio.h>
#include <string.h>
void main()
{
int i;
char string[10];
for(i=0;i<6;i++)
{
scanf("%c",&string[i]);
}
printf("%s",string);
printf("%d",strlen(string));
}

china
china
烫烫烫烫烫烫烫21

[解决办法]

C/C++ code
#include <stdio.h>#include <string.h>int main(){  int i;  char string[10];  for(i=0;i<6;i++)  {    scanf("%c",&string[i]);  }  string[i]='\0';  printf("%s",string);  printf("%d",strlen(string));  return 0;}
[解决办法]
C/C++ code
#include <stdio.h>#include <string.h>int main(){  int i;  char string[10];  for(i=0;i<6;i++)  {    scanf("%c",&string[i]);    getchar();//吸收缓冲区内的回车键  }  string[i]='\0';  printf("%s",string);  printf("%d",strlen(string));  return 0;}
[解决办法]
如楼上所言,打印字符串时必须是以'\0'结束的,系统识别字符串的方法是从指定地址向后搜索,直到有一个等于'\0'字符时结束,这段内存单元值视为一个字符串。
printf("%s",string)这个函数从string开始打印字符,直到遇到一个等于'\0'的字符才结束。如果string已经初始化为全0的话,是能得到正确结果的,即打印出输入字符,但是如果没有初始化,就极有可能出现乱码现象。

读书人网 >C语言

热点推荐