C Выполненный файл не работает должным образом на linux сервере - PullRequest
0 голосов
/ 23 марта 2020

Я написал файл c в соответствии со стандартом c99 и загрузил его на сервер linux моего коллажа, подключившись к нему через s sh и scp. Я отладил свой файл, используя следующую команду:

> gcc -std=c99 -Wall -pedantic-errors -Werror -DNDEBUG part1.c -o mtm_tot

, и когда я запускаю следующую команду:

> ./mtm_tot< test1.in > tmpout

Я пишу:

> cat tmpout

, но ничего не получается напечатано (файл пуст) может кто-нибудь помочь мне понять, почему это происходит?

Я работаю на macOS и использую терминал. Содержимое test1.in:

8
5 9 -1 4 20 256 -32 17 32

мой c код при необходимости:

#include <stdio.h>
#include <stdlib.h>

#define Error (-1)

int PowOf2(int num)
{
    if (num<=0) return Error;
    if (num==1) return 0;
    int counter=0;
    while (num>=2)
    {
        if (num%2!=0)
            return Error;
        counter++;
        num/=2;
    }
    return counter;
}

int main()
{
    int inputs_num;
    printf("Enter size of input:\n");
    scanf("%d",&inputs_num);
    if (inputs_num<=0)
    {
        printf("Invalid size");
        return 0;
    }
    printf("Enter numbers:\n");
    int *saver=malloc(inputs_num* sizeof(int));
    if (saver==NULL)
        return 0;
    for (int i=0;i<inputs_num;i++)
    {
        int tmp=scanf("%d",&saver[i]);
        if (tmp==EOF)
        {
            printf("Invalid number");
            return 0;
        }

    }
    int sum=0;
    for (int i=0;i<inputs_num;i++)
    {
        int res=PowOf2(saver[i]);
        if (res!=-1)
        {
            sum+=res;
            printf("The number %d is a power of 2: %d = 2^%d\n",saver[i],saver[i],res);
        }
    }
    printf("Total exponent sum is %d",sum);
    free(saver);
    return 0;
}
...