1. ## fgets

in my book that my teacher is using. it wnats me to write a program that converts a binary number to a decimal number. and with out using string .h or pointers. the only way i know to store a string is fgets. but as you probaly know fgets stores the array as a char and i need the array as a double for a pow function later on. can any one point me in the right direction on how to convert the array to a double array or to store it origanly as a double array ty so much

2. yes that is the main goal of my program but i just need to know how to get the array that i have inputed from fgets witch is a char ro a double so i can use the pow from math.h

3. ## fget type convertion??? HElp PLz

Here is my code as u can see i tried to convert a array (whitch is a char) ro a double if you could tell me a better way to do this or tell me whats wrong with my code i would be ver great full o and btw the code is suposed to convert a bionary number into a decimal

Code:
```#include "stdafx.h"
#include "math.h"

void get_string( char buffer[], int size ) ;
void convert (int temp, double array2[]) ;
void main (void)
{

int i = 0;
int temp ;

char array[20] ;

double array2[20];

printf("Please enter in a binary number: ");

get_string (array,20);

for(i=0; array[i]=='\0' ;i++)
{
temp = i ;
}

printf("%i",temp);
for(i =0; i>=20; i++)
{
array[i] = (char)array2[i] ;
}

for(i=0; array[i]!= '\0' ; i++ )
{
convert(temp,array2[i]) ;
}

}

/*
Name		:	get_string - Allows the user to input a string.
Parameters	:	buffer     - The input string.
*/
void get_string( char buffer[], int size )
{
char character;
int j = 0;

do									/* Get a character until newline or 		*/
{									/* we run out of characters.				*/
character = getchar() ;
buffer[j] = character ;
++j;
}
while ( character != '\n' && j < size ) ;

while ( character != '\n' )			/* Get rid of extra characters.				*/
character = getchar() ;

buffer[j - 1] = '\0' ;				/* Replace newline with the null-byte.		*/
}

void convert (int temp, double array2[])
{
double temp3 ;
double temp4 ;
int i = 20;
double power =0;

for(i=temp; i>=0 ; i--)

{
temp3 =	pow ( array2[i], power) ;
temp4 += temp3 ;
power++ ;
printf("##%lf",temp3);
}

printf("%lf,##%lf\n##%i", temp4,temp3,array2[0] ) ;

}```

4. Without using string.h or pointers (not directly at least).
Code:
```#include <stdio.h>
#include <stdlib.h>

int main ( void )
{
printf ( "%d\n", (int)strtol ( "101", NULL, 2 ) );

return 0;
}```
-Prelude

5. printf ( "%d\n", (int)strtol ( "101", NULL, 2 ) );
what dose the strol function do

and my program has to have user input for the binary number i cant seem to replace "101" with a varable + the number that goes after null how do u determin the size of that

6. printf ( "%d\n", (int)strtol ( "101", NULL, 2 ) );
what dose the strol function do

and my program has to have user input for the binary number i cant seem to replace "101" with a varable + the number that goes after null how do u determin the size of that ty for any help

7. In one of your for loops you had array[i] == '\0' or something symilar, this should be array[i] != '\0'. As far as the convertion, just cast it (for (int i = 0; array[i] != '\0'; i++){longarray[i] = (long) array[i];}). But I don't see why you need pow (), just use something like this:

int i;

for (i = 0; array[i] != '\0'; i++);

ptrarray = (char *) calloc (i / 8, 1);

for (i = 0; array[i] != '\0'; i++);
{
for (int j = 0; j < 8; j++)
*(ptrarray + i) |= (array[i] & (1 << j));
}

8. ## ???

i too have to write a program just like Can opener's. this is what i did...but it doesnt work...could someone help me with the calculations? and find out whats wrong?

Code:
```#include <stdio.h>

void get_string( char buffer[], int size ) ;
void binary( char number[] ) ;

const int MAX = 9 ;

/*
Name		:	get_string - Allows the user to input a string.
Parameters	:	buffer     - The input string.
*/
void get_string( char buffer[], int size )
{
char character;
int j = 0;

do									/* Get a character until newline or 		*/
{									/* we run out of characters.				*/
character = getchar() ;
buffer[j] = character ;
++j;
}
while ( character != '\n' && j < size ) ;

while ( character != '\n' )			/* Get rid of extra characters.				*/
character = getchar() ;

buffer[j - 1] = '\0' ;				/* Replace newline with the null-byte.		*/
}

void main ( void )
{
char number[ MAX ] ;

printf( "Enter a binary number : " ) ;
get_string( number, MAX ) ;

binary( number ) ;

printf( "\nDecimal value : %s\n", number ) ;
}

void binary( char number[] )
{
int base = 2;
int result = 0 ;
int i ;

for ( i = 0 ; number[ i ] != '\0'; i++ )
{
result = result * base + ( number[ i ] - '0' ) ;
}
}```
if i enter - 00010101 - the decimal value should be 21...but it just outputs 00010101...