问题
我想要使用指针来输入输出字符串,并计算每个字符ascaii码相加的数值
代码
#include<stdio.h>
#include<string.h>
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<stdio.h>
#include<string.h>
int main()
{
char *str1;
int checksum=0;
gets(str1);
int cnt = strlen(str1);
for(int i=0;i<cnt;i++)
{
checksum += str1[i];
}
puts(str1);
printf("%d",checksum);
return 0;
}
疑问
请问这是为什么呢?strlen返回size_t类型是非负的,i为0也是非负的,好像也不存在类型转换时发生的错误啊。