关于字符数组的判断问题

要求:本题要求编写程序,针对输入的N个字符串,输出其中最长的字符串。
输入第一行给出正整数N;随后N行,每行给出一个长度小于80的非空字符串,其中不会出现换行符,空格,制表符。

我这个代码只输出第一个读的字符串,我通过检查发现是35行不会进去,但是我觉得没有问题,所以是哪里出错了呢

int main() {
    int N = 0, i = 0, m = 0, e = 0;
    scanf("%d",& N);
    char A[83] = { 0 };//chang的那个
    int qda = 0;
    char B[83] = { 0 };//当前
    int da = 0;
    getchar();
    for (i = 0; i < N; i++) {
        B[82] = { 0 };
        da = 0;
        for (m = 0; m < 83; m++) {
            B[m] = getchar();
            if (B[m] == '\n') {
                break;
            }
            da++;
        }
        if (i == 0) {
            for (m = 0; m < da; m++) {
                A[m] = B[m];
                qda = da;
            }
        }
        else {
            for (m = 0; m < 83; m++) {
                printf("1");
                if (A[m] == '0' && B[m] != '0') {
                    for (e = 0; e < da; e++) {
                        A[e] = B[e];
                    }
                    qda = da;
                    break;
                }
                if (A[m] != '0' && B[m] == '0' || A[m] == '0' && B[m] == '0') {
                    printf("2");
                    break;
                }
            }
        }
    }
    for (i = 0; i < qda; i++) {
        if (i == 0) {
            printf("The longest is: %c", A[i]);
        }
        else {
            printf("%c", A[i]);
        }
    }
    return 0;
}

你和字符'0'较劲干啥呢?字符串结束符是 '\0'啊

#include <stdio.h>
int strLen(char *s)
{
    int i=0;
    while(s[i] != '\0')
        i++;
    return i;
}
int main()
{
    char s[100][81] = {0};
    int N,max=0,maxlen=0,len;
    scanf("%d",&N);
    for(int i=0;i<N;i++)
    {
        scanf("%s",s[i]);
        len  = strLen(s[i]);
        if(i==0 || len > maxlen)
        {
            max=  i;
            maxlen = len;
        }
    }
    printf("%s",s[max]);
}