首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

程序:统计输入字符的总数,一直报错。该如何解决

2012-03-30 
程序:统计输入字符的总数,一直报错。本人是初学者,想要实现统计输入多少字符,结果程序一直出错,不知道哪里

程序:统计输入字符的总数,一直报错。
本人是初学者,想要实现统计输入多少字符,结果程序一直出错,不知道哪里错了,请各位高手指点。


C/C++ code
#include<stdio.h>void main(){    int i=0;    int num=0;//统计长度    char *t;        char st1[]="";         printf("请输入字符串st1:\n");    scanf("%s",st1);    t=st1;    printf("%s\n",t); //在此次就出错了        while(*t!='\0')    {        num++;        t++;    }} 





[解决办法]
C/C++ code
#include<stdio.h>void main(){    int i=0;    int num=0;//统计长度    char *t;        char st1[128]={0};//字符数组怎么能不定义他的长度呢?置空用我这种方法比较好         printf("请输入字符串st1:\n");    scanf("%s",st1);    t=st1;    printf("%s\n",t); //在此次就出错了        while(*t!='\0')    {        num++;        t++;    }}
[解决办法]
C/C++ code
char st1[]=""; //你这样只是为st1申请了一个字节的长度(存放了字符串结束符)
[解决办法]
c中经常谈的问题,字符串一定是以'\0'结束。你定义的char str[] = "";相当于定义了char str[1] = '\0'; 然后你把str[1]存的值变成你输入的字符,自然没有'\0'了,这时再用%s(输出字符串)去输出的话,可能就会出错。因为%s一直要找到'\0'才结束,运气好可能str+1的内存正好是0,运气不好就不知会读到哪去了?并且后面的内存你都没有申请,所以理论上可能会报错。

热点排行