עבור לתוכן

++c, הפיכת מערך מסוג char למספר int

Featured Replies

פורסם

היי !

יש לי מערך מסוג char, למשל: {'1', '2'} ואני רוצה להפכו למספר (21) באופן בהבא:


//temp1.cpp



int main()
{
   char myInts[3] = {'0','2','\0'};
  int myChars = myInts;
   return 0;
}

כמובן ש

int myChars = myInts;

זו טעות, אך האם קיימת פונקציה כלשהי או שיטה להפוך מערך אלפא נומרי של ספרות למספר ?

תודה !

פורסם

תוריד מהערך של הchar ,

48 ואז תקבל את הערך בint

פורסם

יותר נכון יהיה להוריד '0' ולא את המספר המפורש.

מעבר לזה, אם מדובר במחרוזת (כלומר מערך chars שמסתיים ב-0) אז יש כבר פונ' מוכנה. לא זוכר את שמה אבל אם תרצה אני אנסה לבדוק.

עריכה:

בקריאה שניה אני מבין מהדוגמא שלך שמדובר באמת במחרוזת ולא "סתם" מערך CHARS.

חוצמזה מצאתי את הפונ' - היא נקראת atoi.

פורסם

אוף אכזבו אותי...

(ובאמת עדיף להוריד '0', זה הכי חכם)

אני לא יודע C++ אלא רק C, אבל לכתוב פונקציה כזאת לא צריך להיות מסובך

n כמובן זהו הגודל של המערך של התווים שאתה רוצה להפוך לint (כמובן שאפשר לגלות אותו, הפונקציה מניחה שהיא מקבלת אותו)


int char_to_int(char[],n)
int i;
int x=0;
for (i=0;i<n;i++)
{
if char[i]='0'
x=x*10;
if char[i]='1'
x=x*10+1;
if char[i]='2'
x=x*10+2;
if char[i]='3'
x=x*10+3;
if char[i]='4'
x=x*10+4;
if char[i]='5'
x=x*10+5;
if char[i]='6'
x=x*10+6;
if char[i]='7'
x=x*10+7;
if char[i]='8'
x=x*10+8;
if char[i]='9'
x=x*10+9;
}
return x;

פורסם

אני אוהב לכתוב דברים מ0...אז הנה בבקשה:


#include <iostream>
using namespace std;

int alpha_char_size(char*);

void main()
{

char cnum[] = {'1','2','3'};
int sz = alpha_char_size(cnum)-1;
int count=0;
int mul=1;
int sum=0;

while (count<=sz)
{
sum+=((int)cnum[sz-count]-48)*mul;
count++;
mul*=10;
}
cout<<sum;
}


int alpha_char_size(char *chr) //counting function
{
int counter=0;
while (*chr!='\0')
{
counter++;
chr++;
}
return counter/3;
}

פורסם

#include <stdio.h>

int main()

{

//char str[3] = {'3','2','\0'}; // the same as:

char str[3] = "32"; //Nice feature of C.

int myint = atoi(str); //It's better to use strtol(str, (char **)NULL, 10); (more error checking

printf("%d\n", myint);

return 0;

}

פורסם

#include <stdio.h>

int main()

{

        //char str[3] = {'3','2','\0'}; // the same as:

        char str[3] = "32";     //Nice feature of C.

        int myint = atoi(str);  //It's better to use strtol(str, (char **)NULL, 10); (more error checking

        printf("%d\n", myint);

        return 0;

}

יש לך טעות קטנה(וחלקית)....בהסברים.



//char str[3] = {'3','2','\0'}; // the same as:
char str[3] = "32"; //Nice feature of C.

תבדוק אותם לרגע עם sizeof ;)

פורסם

יש לך טעות קטנה(וחלקית)....בהסברים.



//char str[3] = {'3','2','\0'}; // the same as:
char str[3] = "32"; //Nice feature of C.

תבדוק אותם לרגע עם sizeof ;)

#include <stdio.h>

int main()

{

char a[] = "32";

char b[] = { '3', '2', '\0' };

if (sizeof(a) == sizeof(b))

printf("Hello Wolrd %d\n", sizeof(a));

return 0;

}

kyuval@BARTON tmp $ gcc -ansi -pedantic -W -Wall b.c

kyuval@BARTON tmp $ ./a.out

Hello Wolrd 3

לא הבנתי.

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים