Я вижу две проблемы здесь. Во-первых, источником strcpy
является a
, где, вероятно, должно быть x
.
Во-вторых, x
не заканчивается нулем. Строки в C являются символьными массивами с нулевым символом в конце.
Я бы изменил две строки:
char x[] = {'3','0','2','5','9','3','1'};
strcpy(a[0].code, a);
до:
char x[] = {'3','0','2','5','9','3','1', '\0'};
strcpy(a[0].code, x);
Вот полная программа, которая дает вам то, что вы хотите (она фактически печатает число дважды, один раз в вашем внутреннем цикле символ за символом и один раз с printf
, чтобы вы могли видеть, что они одинаковы):
#include <stdio.h>
#include <string.h>
#define MAX 100
struct encode {
char code[MAX];
} a[10];
int main() {
int i, j;
char x[] = {'3','0','2','5','9','3','1','\0'};
for(i = 0; i < 1; i++) {
for(j = 0; j < 7; j++) {
printf("%c", x[j]);
}
printf("\n");
strcpy(a[0].code, x);
}
printf("%s\n",a[0].code);
return 0;
}
Обновление на основе комментария:
Извините. Я новичок в C. Мои извинения за неправильную вставку фрагмента кода в начале: "printf ("% c ", a [0] .code);" не отображается "3025931".
Нет, не будет. Это потому, что a[0].code
- это массив символов (в данном случае строка), и вы должны использовать "%s"
, , а не "%c"
. Изменение спецификатора формата в printf
должно исправить эту конкретную проблему.