2016-11-09 5 views
0

Я пытаюсь сделать программу, которая просит пользователя начать вводить разные символы (не важно, что) до «EOF». После этого я должен «напечатать» этот массив без чисел. Так что-то вроде этого:Удалить числа из массива?

'User input':123asd (! only example) 

'Output':asd (! only example) 

Моя проблема в том, что я не могу понять функцию. Я был в состоянии достигнуть:

User input:asd123 (!only example) 

Output:asd   (!only example) 

Но когда я поворачиваю его вокруг (first example!) он не работает вообще. Даже что-то вроде вас - глупые указатели использования, а не это было бы здорово. Я просто пытаюсь понять, возможно ли это так!

#include <stdio.h> 

void element(char a[], int d) { 
    int i; 

    for (i = 0; i <d; i++) { 
     if (a[i] <= '9') { 
      /* 
      .......... 
      */ 
     } 
    } 
    for (i = 0; i < d; i++) { 
     printf("%c", a[i]); 
    } 
} 

int main() { 
    char a[25]; 
    int c, i, d; 
    i = 0; 
    d = 0; 

    while (i < 25) { 
     c = getchar(); 
     if (c =='\n') { 
      a[i] != c; 
     } else if (c == EOF) { 
      break; 
     } else { 
      a[i] = c; 
      i++; 
      d++; 
     } 
    } 
    putchar('\n'); 

    element(a, d); 

    return 0; 
} 
+1

', если (а [я] <= '9')' -->', если ((а [я] < '0') || (а [ i]> '9')) ' – LPs

+0

@WhozCraig Right! Edited. – LPs

ответ

0

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

void element(char a[], int d){ 
    int i; 
    for(i=0;i<d;i++){ 
    if(!((a[i] >= '0') &&(a[i] <= '9'))) 
     printf("%c",a[i]); 
    } 
}  

Если, однако, вы хотите использовать массив символов позже, и вы не имеете использования массива целых чисел, вы можете отфильтровать их на стадии ввода. т. е. вы используете условие if выше во время чтения массива, и массив будет содержать только символы. Затем вы можете нормально печатать.

+0

Ваш код печатает только цифры .... – LPs

+1

Исправлено. Спасибо @LPs –

+0

Пока нет. Вы должны удалить '=' из условий, а '&&' должно быть '||' – LPs

0

Самый простой способ, чтобы пропустить номера на этапе ввода:

 while(i<25){ 
       c=getchar(); 
       if(c =='\n'){ 
         /* I don't know what you are trying to do here */ 
         a[i] != c; 
       }else if(c == EOF){ 
         break; 
       }else if(c >= '0' && c <= '9'){ 
        /* number - skip it */ 
       }else{ 
         a[i] = c; 
         i++; 
         d++; 
       } 
     } 
+0

Я бы сказал« на выходном каскаде ». На всякий случай нечисловые символы действительно нужны. Это удовлетворяет спрос, так как OP просто хочет напечатайте значения, но цифры –

+0

Я хотел пропустить «\ n», иначе он поместил бы его в мой массив символов, и мне это не понравилось, потому что я потерял бы половину введенных данных. Спасибо за ответ. – Terminatorka

0

Вы можете просто сделать

void element(char a[], int d) 
{ 
    int i; 

    for(i=0;i<d;i++) 
    { 
     if ((a[i] < '0') || (a[i] > '9')) 
     { 
      printf("%c",a[i]); 
     } 
    } 
} 
0
#include <stdio.h> 
#include <ctype.h> 

void element(char a[], int *d){ 
    int i, j; 

    for(j = i = 0; i < *d; i++){ 
     if(!isdigit((unsigned char)a[i])){ 
      a[j++] = a[i]; 
     } 
    } 
    *d = j;//Reflect size change by deletion 
    for(i = 0; i < *d; i++){ 
     printf("%c", a[i]); 
    } 
    putchar('\n'); 
} 

int main(void){ 
    char a[25]; 
    int c, d, i = 0; 

    while(i < 25 && (c=getchar())!= EOF && c != '\n'){ 
     a[i++] = c; 
    } 
    d = i; 

    putchar('\n'); 
    element(a, &d); 

    return 0; 
} 
1

В вашей void element(char a[], int d) функции просто поместите следующий код - >>

  int i; 

      for(i=0;i<d;i++){ 
        if(a[i] > '9' || a[i]< '0') 
        { 
         printf("%c",a[i]); 

        } 

      } 

Приведенный выше код будет печатать все, кроме номеров символов (0-9). И если вы хотите удалить специальные символы, то затем обратитесь к значениям ASCII специальных символов и упомяните об этом в своем коде

1

вы можете использовать IsAlpha для проверки буквы-символа

#include <stdio.h> 
#define MAX_SIZE 25 

int main(){ 

     char a[MAX_SIZE]; 
     int i = 0,d = 0; 
     char c; 

     do { 
      c = getchar(); 
      if (isalpha(c)) { 
       a[d++] = c; 
      } 
      ++i; 
     } while (c != EOF && i < MAX_SIZE); 
     putchar('\n'); 

     for(i = 0; i < d; ++i) { 
      printf("%c",a[i]); 
     } 

     return 0; 
} 
0

Все ответы дает мне то, что я хочу see.Thank вас для всех различных подходов и помогает мне в учебе! @Klas Lindback, @samarth kejriwal, @ myxaxa, @BLUEPIXY, @LPs, @Rishikesh Raje

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