Mam pytanie o zadanie:
• Zadeklaruj bufor tekstowy pomocniczy ( char[]
) o rozmiarze 200.
• Wczytaj do niego z klawiatury zdanie zawierające kilka wyrazów.
• Zadeklaruj łańcuch znaków (dynamiczna alokacja) o rozmiarze dokładnie takim, aby wczytane zdanie zmieściło się w nim.
• Przekopiuj tekst z bufora pomocniczego do bufora dynamicznego.
• Wydrukuj bufor dynamiczny na ekranie.
• Dokonaj operacji negacji bitowej na każdym znaku (za wyjątkiem znaku końca '\0').
• Następnie dokonaj operacji przesunięcia bitowego w prawo o 1, dla każdego znaku (za wyjątkiem znaku końca '\0').
• Wydrukuj bufor dynamiczny na ekranie.
to mój kod:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char buffer[200];
printf("Podaj zdanie:\n");
scanf("%[^\n]s", buffer);
int n = -1;
while(buffer[++n]);
char *text;
text = (char*)malloc(sizeof(char) * n + 1);
strcpy(text, buffer);
puts(text);
putchar('\n');
for(int i = 0; i<n; i++)
{
text[i] = ~(text[i]);
}
for(int i = 0; i<n; i++)
{
text[i] = text[i] >> 1;
}
puts(text);
return 0;
}
chodzi mi o ta negację bitowa i przesunięcie bitowe. Dobrze mam to zapisane? przykładowe co dostaję w odpowiedzi to:
Podaj zdanie:
pies i kot
pies i kot
����������
pytajniki i puste pole, tak ma być?