Çözüldü Metin içinde kaydırma yapacak recursive fonksiyon

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.

KOUsoftware

Hectopat
Katılım
1 Nisan 2020
Mesajlar
159
Yer
İstanbul
Daha fazla  
Cinsiyet
Erkek
Meslek
Öğrenci
Örneğin "kemal" kelimesini ve 2 sayısını gönderdiğimizde, 2. indise ' ' (space) karakterini atayıp geri kalanı kaydırması: "ke mal".

C:
void kaydir (char* str, int taban)
 
Son düzenleyen: Moderatör:
Çözüm
Stringde yeterince yer olduğu, taban sayısının ve string uzunluğunun düzgün olduğu vb. düşünülürse bu iş yapmalı. Kalan kısımlar kontrol edilir.
Kod:
void kaydir (char* str, int taban) {
    memmove(str + taban + 1, str + taban, strlen(str) - taban);
    str[taban] = ' ';
}
Recursive yapmana gerek yok. Recursive fonksiyonların gerçek hayatta yeri çok kısıtlı. Eğitim verilirken daha iyi anlaşılsın diye her şeyi onunla yaptırmaya çalışıyorlar.
Recursive yapılacağı da pek belli değil. Var olan stringin değişmesini istiyorsunuz, yazdırma olsa bile anlamsız.
Stringde yeterince yer olduğu, taban sayısının ve string uzunluğunun düzgün olduğu vb. düşünülürse bu iş yapmalı. Kalan kısımlar kontrol edilir.
Kod:
void kaydir (char* str, int taban) {
    memmove(str + taban + 1, str + taban, strlen(str) - taban);
    str[taban] = ' ';
}
Recursive yapmana gerek yok. Recursive fonksiyonların gerçek hayatta yeri çok kısıtlı. Eğitim verilirken daha iyi anlaşılsın diye her şeyi onunla yaptırmaya çalışıyorlar.
Recursive yapılacağı da pek belli değil. Var olan stringin değişmesini istiyorsunuz, yazdırma olsa bile anlamsız.
 
Son düzenleme:
Çözüm
Vavien hocam paylaşmış ama elimde kalmasın bende sunayım.
C:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char *kaydir(char *str, int index) {
    int len = strlen(str);

    char *yeni = malloc(len + 2);
    strncpy(yeni, str, index);
    yeni[index] = ' ';
    strncpy(yeni + index + 1, str + index, len - index + 1);

    return yeni;
}

int main() {
    char str[] = "aerosimit";
    int index = 4;

    printf("Orjinal: %s\n", str);
    char *sonuc = kaydir(str, index);
    printf("Çıktı: %s\n", sonuc);
   
    free(sonuc); //Bellek temizliği
   
    return 0;
}
1683815782719.png
 
Son düzenleme:

Technopat Haberler

Geri
Yukarı