2013-10-26 3 views
0

Я должен получить информацию от пользователя и удалить все, кроме заглавных букв. Однако я не хочу дублировать заглавные буквы. Пока что единственная проблема, с которой я сталкиваюсь, - это удаление дубликатов.удалять дубликаты из отсортированного массива char

Вот код для сортировки букв и размещения только тех, которые я хочу в новый массив.

 placer=0; 
    for (a = 0 ; a < (strlen(regular) - 1); a++) 
    { 
    for (placer = 0 ; placer < strlen(regular) - a - 1; placer++) 
    { 
     if (regular[placer] > regular[placer+1]) 
     { 
     swap    = regular[placer]; 
     regular[placer] = regular[placer+1]; 
     regular[placer+1] = swap; 
     } 
    } 
    } 
printf("regular: %s\n", regular);  // this prints exactly as it is supposed to 
    placer=0; 
    for (a=0; a<strlen(regular); a++){ 
     if (regular[a] != regular[a+1]){ 
     alpha[placer] == regular[a]; 
     placer++; 
     } 
    } 
printf("alpha: %s\n", alpha);  // this does not 

Поскольку он находится, массив alpha по неизвестным причинам не принимает никаких символов. Каждый раз, когда я пытаюсь распечатать его, он просто печатает мусор.

И только уточнить:

char regular[81+1]="\0", alpha[26]; 

Это заявление из 2 массивов.

Любая помощь будет оценена по достоинству.

+1

"альфа [россыпных] == регулярные [а];" должен быть «альфа [россыпь] = регулярный [a];» и вам нужно прервать альфу с '\ 0'; –

ответ

0

Вы ошиблись «==» для «=» в строке alpha [placer] = regular [a] ;.

Так что это должно быть

alpha[placer] = regular[a]; 
+0

..... ничего себе, и здесь я надеялся, что это действительно большая проблема. Большое спасибо. – user2923553

+0

не забудьте сделать то, что предлагает @CharlieBurns, или вы можете получить свое желание. – ryyker

+0

@ryyker Хорошая точка, строка не завершена нулем, если вы предварительно не заполнили ее заранее: 'memset (alpha, 0, sizeof (alpha))' - если char имеет размер 1. –

Смежные вопросы