2016-07-06 7 views
-9

Ich muss EingangWie teilt man den Wert?

int a= 254321; 

dann,

der Wert im a Bedarf in neue Variable platziert werden wie

char b = {21,43,25}; 

, wie wir das tun?

+5

Verwenden Sie die Operatoren '/' und '%' –

+0

Welche Forschung wird in diese Frage gestellt? Bitte sehen Sie, was ein [\ [mcve \]] (http://stackoverflow.com/help/mcve) hier macht. – sjsam

+4

'char b = {21,43,25};'. Das ist nicht stichhaltig C. Anforderungen an das Beispiel allein sind meist unklar. Und ein ungültiges Beispiel zu geben ist sicherlich unklar. Und du hast absolut keine Ideen und kannst überhaupt keinen Versuch machen? – kaylum

Antwort

2

Wie gesagt von @M.M die / und % Betreiber sind dein Freund. Indem wir sie verwenden, können Sie eine Funktion wie die folgende schreiben:

#define SPLITTER 100 

/* ensure the the value of SPLITTER is not too big for parts to fit into char */ 
#if SPLITTER > 256 
#error value of SPLITTER is to big for type char 
#endif 

int split(int value, char *parts, int len) 
{ 
    int count = -1; /* assume error */ 


    if ((parts) && (len > 0)) /* valid input? */ 
    { 
     count = 0; /* ok, we have valid input */ 

     while (value != 0) 
     { 
      if (count < len) /* ensure not to exceed size of parts! */ 
      { 
       parts[count] = value % SPLITTER; 
      } 

      value /= SPLITTER; 

      count++; 
     } 
    } 

    return (count); 
} 

Diese Funktion teilt value in Teile mit einer maximalen „Größe“ SPLITTER - 1, schreibt sie in dem übergebenen Speicher an parts und gibt die Anzahl der durchgeführten Splits (oder -1 bei ungültiger Eingabe).

In Bezug auf Ihr Beispiel die Nutzung so sein würde:

int result; 
char parts[10]; 
int i; 

result = split(254321, parts, 10); 
for (i = 0; i < result; i++) 
{ 
    printf("part #%d: %d\n", i + 1, parts[i]); 
} 

Der Ausgang wird:

part #1: 21 
part #2: 43 
part #3: 25 
+0

OP erwähnt 'b' als' char' Array, nicht 'int' .. Es könnte ein Tippfehler sein..Also gute Erklärung – Cherubim

+1

@CherubimAnand Danke für die Erwähnung. Ich ging für "int", weil es unklar ist, was das Endergebnis sein soll ('char parts [] = {21, 43, 25}' oder 'char * parts [] = {" 21 "," 43 "" 25 " } '). Ich habe meinen ursprünglichen Beitrag geändert. –

+0

Bitte ermutigen Sie nicht zu Code-Betteln, indem Sie vollständige Code-Antworten auf unvollständige und unklare Fragen posten, ohne dass es vom OP angezeigt wird. – Lundin

2

Nicht zu vergessen, Ihre Frage ist wirklich nicht eindeutig ist. Seien Sie genau darüber, was Sie fragen und welche Syntax verwendet wird. Anweisung char b = {25,43,21}; kann nichts anderes bedeuten als einen direkten Syntaxfehler durch irgendeinen C-Compiler.

Angenommen, Ihre Eingabe ist immer eine sechsstellige Zahl & Anforderung von char b [3] [2] Eine einfache itoa() Simulation sein könnte:

int num, i, j,d; 
char b[3][2]; 

for(i=2; i>=0; i--) 
    for(j=1; j>=0; j--){ 
    d = num % 10; 
    b[i][j]= d+48; 
    num = num/10; 
    } 

Das ist es, Ihr Array ist einsatzbereit. Hoffe das hilft.

+1

Bitte ermutigen Sie nicht Code-Betteln, indem Sie vollständige Code-Antworten auf unvollständige und unklare Fragen ohne Anstrengung von der OP angezeigt. – Lundin

+0

@Lundin, danke für ein Wort des Rates. Ich bin ein neuer Benutzer, der mit der Stackoverflow-Kultur nicht vertraut ist.Ich habe gerade eine einfache Frage gesehen und geantwortet. Aber ja, ich werde dir in Zukunft sicher Ratschläge geben. Vielen Dank. :) –

+0

Abgesehen von dem Code-Bett Teil, der von der Gemeinschaft verpönt ist: Wenn eine Frage unklar oder unvollständig scheint, ist es immer am besten, nur einen Kommentar für das OP und bitten um weitere Informationen, anstatt eine Antwort basierend zu veröffentlichen auf Annahmen. Auf diese Weise erzwingen wir bessere Qualitätsfragen, anstatt Ratespiele zu spielen. – Lundin

3

Modul und Teilung verwenden.

int main(void) 
{ 
    int a = 254321; 
    int b[5] = {0}; 
    int i; 

    for (i = 0; a ;i++) { 
     b[i] = a % 100; 
     a = a /100; 
    } 
} 
+0

OP erwähnt 'b' als' char' Array, nicht 'int' – Cherubim

+0

Bitte ermutigen Sie nicht Code betteln, indem Sie vollständige Code-Antworten auf unvollständige und unklare Fragen ohne Anstrengung von der OP angezeigt. – Lundin

+0

Sie sollten 'int b [5] = {0};' für richtiges Verhalten initialisieren, wenn 'a' weniger als 10 Dezimalziffern entspricht, oder für alle 5 Elemente iterieren, bis 'a' = Null. – Clifford