Ich schreibe ein Programm, das eine Eingabe von Nullen und Einsen aufnehmen und sie in einem Array zuweisen soll. Dann übergibt es das Array an die Kantenfunktion und formatiert es auf die folgende Weise.Funktion scheint Array nicht zu ändern
- ein 1 zu dem Muster Ausgangsbit zuweisen, wenn zwei aufeinanderfolgende Bits (ein Bit, und es ist vorheriger Bit) unterschiedlich sind
- ein 0 an den Ausgang Bitmuster zuweisen, wenn zwei aufeinanderfolgende Bit (ein Bit, und es ist vorherige Bit) gleich
- Assign 0 zum ersten Ausgangsbit da es keine vorherigen Bit für das erste Bit ist
das Problem ist, dass, wenn die Anordnung mit der Funktion und printf geben wird aufgerufen wird, es einfach ausdrucken S out die ursprüngliche Eingabe. Ich habe es aus verschiedenen Blickwinkeln betrachtet und kann nicht sehen, was falsch ist.
#include <stdio.h>
void edge(int n, int a1[], int a2[])
{
int i = 1;
a2[0] = 0;
int last = a1[i-1];
printf("%d", a2[0]);
for(i = 1; i < n; i++)
{
if(last == a1[i])
{
a2[i] = 0;
}
else
{
a2[i] = 1;
}
printf("%1d", a2[i]);
}
}
int main(void)
{
int i = 0;
int num;
int array1[8];
int array2[8]={0};
printf("Enter an 8-digit barcode: \n");
for(i = 0; i < 8; i++)
{
scanf("%1d", &num);
if(num == 1)
{
array1[i] = 1;
}
}
printf("Output: ");
edge(8, array1, array2);
return 0;
}
Sie aktualisieren den Wert, den Sie in Ihrer Schleife an "last" geben, nicht. Könnte dein Problem dort entstehen? –
Arrays in C (und C++) sind Null schreiben – BadJerry
Was meinst du mit update es? – Dustynana