Здесь я вижу две проблемы. Во-первых, источник 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 », [0] .code); не отображается «3025931».
Нет, не будет. Это потому, что a[0].code
- это массив символов (строка в этом случае), и вы должны использовать "%s"
, не"%c"
. Изменение спецификатора формата в printf
должно исправить эту конкретную проблему.
... что во имя codethulhu заключается в том, что 'strcopy' должен был делать? –
Почему у вас есть функция, называемая дисплеем, которую вы даже не используете? –
попробуйте использовать переменную «i» в файле strcpy (a [i] .code, a); вместо жесткого кодирования до 0? – EToreo