2014-01-10 3 views
0

Добрый день! Могу ли я спросить, как преобразовать строку в целое в турбо С. Например:Преобразование строки в int в Turbo C

void comp() 
{ 
    FILE *fp; 
    int i,x; 
    long int deci; 
    char bin[8]; 
    char *str=0; 
    char buf[1024]; 

    fp=fopen("C:\enc.txt","w"); 

    printf("Enter a text: "); 
    scanf("%[^\n]",str); 
    init(str); 

    for(i=0;i<128;i++) 
    { 
     if(code[i]) 
     { 
      printf("'%c': %s\n",i, code[i]); 
     } 
    } 

Я делаю двоичный код здесь с использованием строки.

encode(str, buf); 
    deci=decimal(buf); 
    printf("%li", deci); 

    fprintf(fp,"%s",deci); 

    fclose(fp); 

} 

Вот функция десятичного()

int decimal(long int decimal) 
{ 
    int dc, power; 
    power=1; 
    ht=0; 
    while(decimal>0) 
    { 
     dc+=decimal%10*power; 
     decimal=decimal/10; 
     power=power*2; 
    } 
    return dc; 
} 

Спасибо за ответы!

+0

Посмотрите http://stackoverflow.com/a/7021750/1018966 – Sandesh

ответ

2

Предполагаю, что вы читаете поток целых чисел в виде строки и хотите, чтобы они были преобразованы в целые числа.

Создать новое целое число массив. Запустите цикл и преобразуйте каждый символ в целое число.

int *buf = new int[strlen(str)]; 
for(int i=0; i < strlen(str)-1; ++i) 
{ 
     buf[i] = str[i] - '0'; 
} 

И здесь у вас есть все целые данные, хранящиеся в целочисленном массиве.

EDIT:

Если вы хотите сохранить строку в целое число,

long long number = 0; 
for(int i = strlen(str) - 2; i >= 0; --i) 
{ 
     number *= 10; 
     number += buf[i]; 
} 
+0

Да. Ты прав. Я должен был дать ограничение от индекса '0' до индекса' strlen (str) -2'. Я отредактирую его. :) – shauryachats

0

Я знаю, я немного поздно, но это, безусловно, поможет другим.

Использование встроенной функции atoi, который доступен в stdlib.h

#include <stdlib.h> 
    char a[2]="10"; 
    int b = atoi(a) + 5; 
Смежные вопросы