C语言的一道简单问题,运行时错误

为什么在dev上显示的是正确的答案,而在PTA上就不对呢

img

img


代码如下
#include<stdio.h>
#include<string.h>
main(){
char a[100];
int i;
while(gets(a)!=NULL){
if(a[0]>='a'&&a[0]<='z'){
a[0]=a[0]-32;
}
for(i=0;i<strlen(a)-1;i++){
if(a[i]==' '&&(a[i+1]>='a'&&a[i+1]<='z')){
a[i+1]-=32;
}
}
puts(a);
}
}

运行时错误是因为你代码逻辑有问题,出现内存访问问题,比如我简单测试时,如果只输入换行,就会触发这个问题,具体问题我没看。
或者单独只输入一个回车,死循环在for循环中,,,

img

运行时错误应该是因为你的main函数没有声明类型,把它改成 int main()

没有return