wskaźniki odwracanie ciągu znaków

0

Witam potrzebuję zrobić program, a w zasadzie funkcję, której argumentem jest wskaźnik do pierwszego elementu ciągu. Następnie alokuje miejsce o tej samej długości pod innym adresem i zapisuje tam pierwotny ciąg w odwrotnej kolejności oraz zwraca wskaźnik do pierwszego elementu ciągu.

Dawno nie miałem do czynienia ze wskaźnikami i mam problem, prawdopodobnie z alokacją pamięci, program nie chce liczyć długości ciągu lub gubi adresy i wyświetla niepoprawne elementy ciągu :/ Oto krótki program który powinien to robić:

#include<stdio.h>
#include <stdlib.h>
#include<string.h>
#include <stddef.h>

int main()
{
    int n, *cn;
    char ctekst;
    char *cwsk1;
    n=0;
    printf("*** Program odwracajacy ciag znakow ***\n");
    printf("Podaj ciag znakow: ");
    scanf("%s",&ctekst);

    cwsk1 = (char*) malloc(30 * sizeof(char));
    cwsk1=&ctekst;

while(*cwsk1 != 0)
    {
         n++;
         printf("n: %d\n",n);   
         printf("c: %c\n",*cwsk1); 
         printf("w: %p\n\n",cwsk1);         
         cwsk1++;   
    }

Program się sypie gdy podam więcej znaków niż 5

0

Zapomniałeś zaalokować pamięć pod wpisany przez użytkownika napis.

0
Chev_Lucas napisał(a)
    cwsk1 = (char*) malloc(30 * sizeof(char));
    cwsk1=&ctekst;

gubisz tutaj adres.

edit:
Poza tym próbujesz wprowadzić ciąg znaków do zmiennej "char ctekst;". Aby na pewno tak miało być?

0

Z tego co wiem Stringa można traktować jako tablicę znaków char. Nie wiem jak mam to zrobić :/

0
Chev_Lucas napisał(a)

Z tego co wiem Stringa można traktować jako tablicę znaków char. Nie wiem jak mam to zrobić :/

ale "char ctekst;" to pojedynczy znak, a nie tablica znaków. tutaj masz przykład jak wczytać tablicę znaków. Ogólnie potrzebujesz wskaźnika na char, (wskaźnik do tablicy znaków), wskaźnik na pierwszy element.

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