字符串打印字符过多

时间:2018-10-09 10:34:45

标签: c

基本上,我在这里具有此功能,当输入十进制值时,该功能会吐出一个十六进制值。这段代码工作得很好,但是当我逐字将其插入到我正在处理的一大组代码中时,十六进制数字吐出有8个多余的多余字符,后跟正确的十六进制值。关于如何解决它的任何想法?有人告诉我终止字符串十六进制,但是我该在哪里正确执行以及如何执行?

#include <stdio.h>
#include <string.h>

int main(void){

 int decimalnum, quotient, remainder;
 int k, l = 0;
 char hexadecimalnum[100];
 char str[50];
 int m;
 char temp;
 int j;

 printf("enter decimal number: ");
 scanf("%d", &decimalnum);

 quotient = decimalnum;

 while (quotient != 0) {
    remainder = quotient % 16;
    if(remainder < 10) {
       hexadecimalnum[l++] = 48 + remainder;
    }
    else {
       hexadecimalnum[l++] = 55 + remainder;

    }
    quotient = quotient / 16;
 }

 // Display integer to character.
 for(k = l; k >= 0; k--) {
    str[k] = hexadecimalnum[k];
 }

 m = 0;
 j = l-1;
 // Flip the string because it is written backwards.
 while(m <j) {
    temp = str[m];
    str[m] = str[j];
    str[j] = temp;
    m++;
    j--;
 }
 printf("\n%s\n", str);

 return 0;

1 个答案:

答案 0 :(得分:3)

在while循环后添加hexadecimalnum[l] = 0;。您需要终止字符串