程序:统计输入字符的总数,一直报错。
本人是初学者,想要实现统计输入多少字符,结果程序一直出错,不知道哪里错了,请各位高手指点。
#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++; }} #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++; }}
[解决办法]
char st1[]=""; //你这样只是为st1申请了一个字节的长度(存放了字符串结束符)
[解决办法]
c中经常谈的问题,字符串一定是以'\0'结束。你定义的char str[] = "";相当于定义了char str[1] = '\0'; 然后你把str[1]存的值变成你输入的字符,自然没有'\0'了,这时再用%s(输出字符串)去输出的话,可能就会出错。因为%s一直要找到'\0'才结束,运气好可能str+1的内存正好是0,运气不好就不知会读到哪去了?并且后面的内存你都没有申请,所以理论上可能会报错。