Wrzucenie while do wnętrza funkcji

0

Witam, mam taki kod w C na avr

void send_a_character(unsigned char character);

char napis[] = "napis do wyswietlenia";


tak ją wywołuję:

while(napis[i]!=0)
	{
		send_a_character(napis[i]);
		i++;
	}



void send_a_character (unsigned char character)
{
	PORTD = character;
	PORTB|= (1<<RS);
	PORTB|= (1<<E);
	_delay_ms(50);
	PORTB&= ~(1<<E);
	PORTD = 0;
}

Funkcja ta wyświetla po 1 znaku stringu, aż dojdzie do jego końca, czyli 0. Funkcję wywoluje w pętli while, aby za każdą iteracją przekaż jej jeden znak.

Jak ją zmienić, żeby wywoływać ją tak:
send_charakter(napis); bez użycia pętli. Innymi słowy potrzebuję tego while wrzuć do wnętrza funkcji. Próbowałem to zrobić, ale były jakieś dziwne błędy.

Generalnie chyba chodzi o to, że przekazać całą tablicę do funkcji.

0

wysyłać wskaźnik do tablicy z charami i to tyle, a później tam sobie odczytywać.

1
void sendString(char *str) {
  while (str[i] != 0) {
    send_a_character(str[i]);
    i++;
  }
}

void send_a_character(unsigned char character) {
  PORTD = character;
  PORTB |= (1 << RS);
  PORTB |= (1 << E);
  _delay_ms(50);
  PORTB &= ~(1 << E);
  PORTD = 0;
}

int main(void) {
  char napis[] = "napis do wyswietlenia";
  sendString(napis);
  return 1;
}

0
void napisz(const char *napis) {
    while(napis[i]!=0)
    {
        send_a_character(napis[i]);
        i++;
    }
}

xD

1
void sendString(char *str) {
  while (str[i] != 0) {
    PORTD = (unsigned char)str[i];
    PORTB |= (1 << RS);
    PORTB |= (1 << E);
    _delay_ms(50);
    PORTB &= ~(1 << E);
    PORTD = 0;
    i++;
  }
}

void send_a_character(character) {}

int main(void) {
  char napis[] = "napis do wyswietlenia";
  sendString(napis);
  return 1;
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1