2016-02-20 2 views
0

Я пытаюсь прочитать строки в массиве до тех пор, пока пользователь не войдет в целую строку, которая является «XXX».
Я не хочу, чтобы значение хранителя хранилось в массиве. Как я могу исключить значение дозорности в массив?Заполните массив строк до тех пор, пока не будет найдено значение для оповещения

Вот что я до сих пор:

#include <stdio.h> 
#include <string.h> 
#define MAXCHAR 15 
typedef char string15[MAXCHAR+1]; 

void 
getInputs(string15 word[], int *nElem) 
{ 
    int i=0; 
    while(i<30 && strcmp(word[i-1], "XXX")!=0) 
    { 
     printf("Input word %d: ", i+1); 
     scanf("%s", word[i]); 
     i++; 

     if(i<=8 && strcmp(word[i-1], "XXX")==0) 
     { 
      printf("Below Minimum Count\n"); 
      printf("Input word %d: ", i); 
      scanf("%s", word[i-1]); 
     } 
    } 
    (*nElem)=i-1; 
} 

int main() 
{ 
    int nElem; 
    string15 word[30]; 
    getInputs(word, &nElem); 

    return 0; 
} 
+0

Ваш вопрос непонятен. Что значит «игнорировать атакующий»? Вы не сказали нам, что именно вы хотите делать с несертифицированными данными. «Мой массив принимает введенное значение дозорного элемента в массив, который я создал». А? Что означает, что для массива «взять введенный дозор»? Это может помочь, если вы дадите убедительные примеры ввода и ожидаемого результата или ожидаемого поведения. – kaylum

+0

Мне непонятно, что вы здесь делаете. Я также категорически отвергаю трюк typedef, который вы пытаетесь сыграть. C не имеет строк, и вы только делаете свой код сложнее отлаживать, пытаясь притвориться, что он это делает. – torstenvl

+1

@ stevie Я пытался угадать ваши намерения. Пожалуйста, не стесняйтесь откат или пересмотр, если я ошибаюсь. – user3386109

ответ

1

Попытка изменить код как можно меньше, делая это имеет смысл ...

void getInputs(string15 word[], int *nElem) 
{ 
    int i = 0; 
    char buffer[128]; 
    while(i<30) 
    { 
     printf("Input word %d: ", i+1); 
     fgets(buffer, 128, stdin); 

     if (strcmp(buffer, "XXX\n") != 0) { 
      strncpy(word[i], buffer, 15); 
      i++; 
     } else { 
      if (i<=8) { 
      printf("Below Minimum Count\n"); 
      continue; 
      } else { 
      break; 
      } 
     } 
    } 
    (*nElem) = i; 
} 

Чтобы быть честным, хотя, есть другие вопросы дизайна. Например, почему ваша функция не возвращает количество добавленных символов, а не изменяет целое число, которому вы передали указатель?

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