Saya seorang pemula dalam bahasa pemrograman c dan dalam beberapa hari ini saya berlatih untuk melakukan beberapa latihan c dan saya terjebak dalam beberapa latihan untuk konversi: jadi inilah yang telah saya lakukan

#include <stdio.h>

#include <string.h>

int main() {

    int num[8] = {
        0,
        1,
        2,
        3,
        4,
        5,
        6,
        7
    };
    long long binary, octal, tempoctal;
    int last, i, A, tempi;
    char hex[9] = {
        '000',
        '001',
        '010',
        '011',
        '100',
        '101',
        '110',
        '111'
    };
    int bex[10];
    A = 0;

    printf("enter an octal number:  ");
    scanf("%lld", & octal);

    tempoctal = octal;

    while (tempoctal != 0) {
        last = tempoctal % 10;

        for (i = 0; i < 8; i++) {
            if (num[i] == last) {
                tempi = i;
                bex[A] = tempi;

            }
        }

        A++;
        tempoctal /= 10;
    }

    printf("\nthe is %s", bex);

    return 0;
}

Jadi saya hanya ingin tahu mengapa ketika saya ingin mencetak array bex saya mendapatkan kesalahan pada konsol masukkan deskripsi gambar di sini. Meskipun saya tahu solusinya tetapi saya ingin melakukannya dengan cara saya sendiri.

c
0
Fares Ars 21 September 2019, 01:47

1 menjawab

Jawaban Terbaik

Menjawab pertanyaan Anda. bex dideklarasikan sebagai int bex[10], larik bilangan bulat. printf("%s"... mengharapkan string karakter, bukan array int.

  • String karakter biasanya berupa array karakter char bex[10]. Char adalah satu byte, dan sebuah int biasanya panjangnya 4-byte. Jadi, Anda melihat perbedaan di sana. Dalam contoh Anda, Anda memodifikasi byte terendah dari 'int', meninggalkan 3 lainnya sebagai '0'.

  • karakter yang dapat dicetak memiliki kode yang sesuai. Misalnya karakter '0' memiliki kode 48 dalam pengkodean asccii. Semua karakter lain yang mewakili angka memiliki kode berurutan (48..57). Ini cara printf dan layanan lain mengetahui apa yang harus dicetak jika mereka melihat 48 dalam byte.

  • string dalam 'c' diakhiri dengan 0 nyasar, sehingga printf tahu di mana harus berhenti membaca karakter.

Jadi, jika Anda ingin mencetak 'bex' sebagai string, Anda harus membuatnya sebagai string. Misalnya

char bex[10];

 for (i=0; i <8; i++)
     bex[A++] = '0' + i; // code of '0' + a number
 bex[A] = 0; // string terminator

Pastikan 'A' Anda selalu kurang dari '8' untuk menghindari array overflow (panjang string 9 ditambah satu karakter untuk terminator. Sekarang Anda dapat melakukan ini.

 printf("%s", bex);

Anda harus mengerjakan sisa program, karena itu tidak melakukan apa pun yang berguna dalam keadaan saat ini, tetapi ini akan membantu Anda untuk memulai.

0
Serge 21 September 2019, 01:35