Я продолжаю получать символы мусора, когда выводя «123» и «0».Почему я получаю мусорных персонажей?
Я смог сузить его до метода базового метода, и я считаю, что это может быть один из моих условий «для цикла», но я не могу найти, чтобы убрать мусорные символы.
Если вы можете помочь, пожалуйста. Программа находится в C.
Заранее благодарю вас.
#include <stdio.h>
#define COUNT 8 /* number of hex digits to display */
#define DECIMAL 10 /* to indicate base 10 */
#define HEX 16 /* to indicate base 16 */
/* array used for ASCII conversion */
const char digits[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
void baseout (int number, int base, FILE * stream) {
int f1;
int f2;
int index = 0;
int result = number;
char store1[f2];
/*This condition outputs the digit "0" on Line 4*/
if (number == 0) {
fputc(digits[0], stream);
}
/*This condition outputs the digit "0" after "0x"*/
if (base != DECIMAL){
store1[f1] = '0';
fputc(store1[f1], stream);
}
/*This condition outputs codes from bases 2-36*/
if (number != 0) {
for(f2 = 1; f2 < COUNT && result != 0; f2++){
index = result % base;
store1[f2] = digits[index];
result = result/base;
}
}
for (f2 = COUNT; f2 > 0; f2--){
fputc(store1[f2], stream);
}
}
void decout (unsigned int number, FILE * stream) {
/*Passes DECIMAL to baseout algorithm*/
baseout(number, DECIMAL, stream);
}
void hexout (unsigned int number, FILE * stream) {
/* Output "0x" for hexidecimal. */
writeline ("0x", stream);
baseout (number, HEX, stream);
}
void newline (FILE * stream) {
/* Output a newline character */
fputc('\n', stream);
}
int writeline (const char * message, FILE * stream) {
int index = 0;
/*While "index<messagelength" output the each character of message*/
while(message[index] != '\0'){
fputc(message[index], stream);
index++;
}
/*Return the message length*/
return sizeof(message);
}
int main (int argc, char *const* argv) {
writeline ("Hello World", stdout);
fprintf (stderr, "Hola Mundo\n");
newline(stdout);
decout (123, stdout);
newline(stdout);
decout (0, stdout);
newline(stdout);
hexout (0xFEEDDAD, stdout);
newline(stdout);
return 0;
}
желаемая Выход:
Hola Mundo
Hello World
0x0FEEDDAD
токовый выход:
Hola Mundo
Hello World
0x0FEEDDAD
Попытайтесь сосредоточиться на одном вопросе за раз. Уменьшите код до небольшого тестового примера только одной проблемы и отлаживайте его, а затем, когда это работает, переходите к следующей проблеме. –
'for (f1 = COUNT - 1; f1
iwolf
Какой именно желаемый результат и фактический вывод вашей программы? –