这个c语言缩写程序运行时不会出现结果,但自己检查不出来

题目:科研工作者经常要向不同的期刊投稿。但不同期刊的参考文献的格式往往各不相同。有些期刊要求参考文献所发表的期刊名必须采用缩写形式,否则直接拒稿。现对于给定的期刊名,要求按以下规则缩写: (1)长度不超过4的单词不必缩写; (2)长度超过4的单词仅取前4个字母,但其后要加“.”; (3)所有字母都小写。

输入格式:
首先输入一个正整数T,表示测试数据的组数,然后是T组测试数据。 每组测试输入一个包含大小写字母和空格的字符串(长度不超过85),单词由若干字母构成,单词之间以一个空格间隔。

输出格式:
对于每组测试,在一行上输出缩写后的结果,单词之间以一个空格间隔。

输入样例:
2
Ad Hoc Networks
IE Transactions on Nanotechnology
输出样例:
ad hoc netw.
ie. tran. on nano.

我写的代码:

#include<stdio.h>
void abbr(int i, char a[]);
void trans(int i,char a[]);


main(){
    int a, o, len, i=0;
    char str[86];
    scanf("%d",&a);
    for(o=1; o<=a; o++){
    while((str[i]=getchar())!=EOF){
     i++;
    }
len=sizeof(str);
if(i=0){
    abbr(i, &str[i]);    
}
for(i=1; i<len-1; i++)
{
    if(str[i]=' '&&str[i+1]!=' '){
        i=i+1;
        abbr(i,&str[i]);
    }    
}}}


void abbr(int i,char a[]){
    int    n=0, m;
    for(i;a[i]!=' ';i++){
    n=n+1;}
    if(n<=4){
        for(i; a[i]!=' ';i++){
        trans(i, &a[i]);}
        printf(" ");
        }
    else
    for(m=1; m<=4; m++, i++){
    trans(i,&a[i]);}
    printf(". ")    ;
}
void trans(int i,char a[]){
    if(a[i]>='a'&&a[i]<='z'){
        printf("%c", a[i]);}
        else{
        a[i]=a[i]-32;
        printf("%c", a[i]);
    }
}


可以帮忙看看哪里错了吗,谢谢

你的main函数没有加类型啊

img


这是一个AC的

#define jokerboost 666666
#include <stdio.h>//取了一个巧,直接输出
#include <string.h>
void change(char a[])
{
    int i;
    for (i = 0; a[i] != '\0'; i++)
    {
        if (a[i] >= 'A' & a[i] <= 'Z')
        {
            a[i] += 32;
        }
    }
}
int main()
{
    int n;
    scanf("%d\n", &n);
    for (int i = 0; i < n; i++)
    {
        char a[85], b[85];
        int num = 0;
        gets(a);
        change(a);
        for (int j = 0; a[j]!='\0'; j++)
        {
            num++;
            if (a[j] == ' ')
            {
                num = 0;
            }
            if (num < 5)
            {
                printf("%c", a[j]);
            }
            else if (num == 5)
            {
                printf(".");
            }
        }
        printf("\n");
    }
    return 0;
}