|
|
|
| Прошу опытных программистов объяснить как с помощью объединения на два поля вывести целое число через символьный формат. | |
|
|
|
|
|
|
|
для: VlTag
(27.05.2013 в 13:55)
| | Вывести куда? | |
|
|
|
|
|
|
|
для: cheops
(27.05.2013 в 21:20)
| | Куда вывести.
Нашёл в Internet пример кода. Надо его довести до рабочего состояния.
/*Вывод целого числа с помощью объединения*/
#include <stdio.h>
#include <stdlib.h>
union pw {
int i;
char ch[2];
};
int write_int(int num, FILE *fp);
int main()
{
FILE *fp;
fp = fopen("test.tmp", "w+");
if(fp==NULL) {
printf("Cannot open file. \n");
fclose(fp);
return 0;
}
/* Вывод целого числа с помощью объединения */
int write_int (int num, FILE *fp) {
union pw wrd;
wrd.i = num;
putс(wrd.ch [0], fp); /* Вывод первой половины */
return putc(wrd.ch [1], fp); /* Вывод второй половины */
} | |
|
|
|
|
|
|
|
для: VlTag
(27.05.2013 в 22:05)
| | Обсуждаемый код размещён:
http://www.c-cpp.ru/books/obedineniya
Кое-что получилось, но работает не так как надо.
Что в коде изменить?
#include <stdio.h>
#include <conio.h>
int write_int (int num, FILE *fp) {
union pw {
int i;
char ch[2];
};
union pw wrd;
wrd.i = num;
putc(wrd.ch [0], fp);
return putc(wrd.ch [1], fp);
}
int main()
{
int num =0xabcd;
FILE *fp;
fp = fopen("test.txt", "w+");
if(fp==NULL) {
printf("Cannot open file. \n");
fclose(fp);
return 0;
}
printf("Program for output integer");
write_int(num, fp);
fclose(fp);
printf(" \n\n\n");
printf("For stop program press key 'q': \n\n");
getch();
return 0;
} | |
|
|
|