Я написал файл 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;
}