我想要使用指针来输入输出字符串,并计算每个字符ascaii码相加的数值
#include
#include
int main()
{
char *str1;
int checksum=0;
gets(str1);
for(int i=0;i<strlen(str1);i++)
{
checksum += str1[i];
}
puts(str1);
return 0;
}
程序没有报错,但并没有输出想要的结果,程序什么有没有输出。
然后我觉得是for循环里判断出了问题。
我把代码改成下面这样,把strlen(str1),拿出来后程序输出了正常的结果。
#include
#include
int main()
{
char *str1;
int checksum=0;
gets(str1);
int cnt = strlen(str1);
for(int i=0;iputs(str1);
printf("%d",checksum);
return 0;
}
请问这是为什么呢?strlen返回size_t类型是非负的,i为0也是非负的,好像也不存在类型转换时发生的错误啊。
定义的指针类型不能这样用吧,你定义这种char str1[100] = {0}; 可以直接来用。
char *str1;这种还没分配地址空间的不能直接用