C programında isim ve soy isim sansürleme

C:
#include <stdio.h>
#include <stdlib.h>

int main()
{
    char a[100];int i;
    printf("girilecek isim= ");gets(a);
    while(a[i]!='\0')
    {
        if(a[i]>=97&&a[i]<=122)
            a[i]='*';
        i++;
    }
    printf("%s",a);
}
Girdiğin string'de Türkçe karakter bulunmamalı.
Düzeltmeler yaptım tekrar bak istersen.
 
C:
#include <stdio.h>
#include <stdlib.h>

int main()
{
    char a[100];int i;
    printf("girilecek isim= ");gets(a);
    while(a[i]!='\0')
    {
        if(a[i]>=97&&a[i]<=122)
            a[i]='*';
        i++;
    }
    printf("%s",a);
}
Girdiğin string'de Türkçe karakter bulunmamalı.
Düzeltmeler yaptım tekrar bak istersen.
Bu kod tüm harfleri sansürlüyor. Ekstradan 2 if ile sorun çözülüyor

[CODE lang="c" title="Sansür"]#include <stdio.h>
#include <stdlib.h>

int main()
{
char a[100];
int i;

printf("girilecek isim= ");gets(a);
while(a!='\0')
{
if(i == 0){
i++;
continue;
}

if(a[i-1] == ' '){
i++;
continue;
}

if(a>=97&&a<=122){
a='*';
}

i++;
}
printf("%s",a);
}[/CODE]
 
C:
#include <stdio.h>
#include <stdlib.h>

int main()
{
    char a[100];int i;
    printf("girilecek isim= ");gets(a);
    while(a[i]!='\0')
    {
        if(a[i]>=97&&a[i]<=122)
            a[i]='*';
        i++;
    }
    printf("%s",a);
}
Girdiğin string'de Türkçe karakter bulunmamalı.
Düzeltmeler yaptım tekrar bak istersen.
Peki ya son harfleri de yazılacaksa ne değişir bu kodta?
Mesela A*i A****ı
 
C:
void censor(char* string) {
  int i;
  for(i = 1; string[i] != '\0'; i++) {
    const char current = string[i];
    if((current >= 'A' && current <= 'Z') || (current >= 'a' && current <= 'z')) string[i] = '*';
    // else if(current == ' ') i++; // boşluk ile ayrılmış isim soyisimler için
  }
}

For varken neden while?

C:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

size_t BUFFER_SIZE = 100;

void censor(char* string) {
    int i;
    for(i = 1; string[i] != '\0'; i++) {
        const char current = string[i];
        if((current >= 'A' && current <= 'Z') || (current >= 'a' && current <= 'z')) string[i] = '*';
        else if(current == ' ') i++; // boşluk ile ayrılmış isim soyisimler için
    }
}

char * initString(size_t size) {
    return ((char*) malloc((size) * sizeof(char)));
}

char * readline(void) {
    char* buffer = initString(BUFFER_SIZE);
    size_t charCount = getline(&buffer, &BUFFER_SIZE, stdin);
    char* str = initString(charCount);
    strncpy(str, buffer, charCount);
    free(buffer);
    return str;
}

int main()
{
    printf("Enter a Name-> ");
    char* string = readline(); // gets() kullanmayın.
    puts(string);
    censor(string);
    puts(string);
    free(string);
    return 0;
}
 
Son düzenleme:
Bu kod tüm harfleri sansürlüyor. Ekstradan 2 if ile sorun çözülüyor

[CODE lang="c" title="Sansür"]#include <stdio.h>
#include <stdlib.h>

int main()
{
char a[100];
int i;

printf("girilecek isim= ");gets(a);
while(a!='\0')
{
if(i == 0){
i++;
continue;
}

if(a[i-1] == ' '){
i++;
continue;
}

if(a>=97&&a<=122){
a='*';
}

i++;
}
printf("%s",a);
}[/CODE]

Büyük harfler gözükecek şekilde yazdım kodu. Baş harfler büyük olursa problem çözülür.
 

Technopat Haberler

Yeni konular

Geri
Yukarı