2015-03-06 4 views
-2

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

Вот пример одной такой функции я попытался:

int Asterisk(){ 
    int v; 

    for(v=0; v<sizeof Mask; v++){ 
     if(Mask[v] != '*'){ 
      return 1; 
     } 
     else{ 
      return 0; 
     } 
    } 
} 

Как вы можете видеть, эта функция возвращает 1, когда

Mask[0] != '*' 

Я не могу понять, как проверить каждый элемент массива, прежде чем возвращать значение, а не просто проверять первый элемент.

Любая помощь/руководство было бы высоко оценено!

+0

Что делает ** функция нарушена ** ??? имею в виду? –

+0

Не могли бы вы показать, что вы сделали до сих пор? Что содержится в массиве? Является ли это массивом 'char'? – unxnut

+0

Под словом «функция нарушена» вы имеете в виду, что она 'возвращает' s? – tux3

ответ

1

Попробуйте следующее

int Asterisk() 
{ 
    int i = 0; 

    while (i < sizeof Mask && Mask[i] != '*') ++i; 

    return i == sizeof Mask; 
} 

Хотя, как для меня, я хотел бы написать функцию таким образом, что если звездочка присутствует в массиве, то функция возвращает 1.

int Asterisk() 
{ 
    int i = 0; 

    while (i < sizeof Mask && Mask[i] != '*') ++i; 

    return i != sizeof Mask; 
} 

и вызывающий использовать его как

если (! Звездочка()) {/ * делаем что-то * /}

То есть, если звездочка присутствует в массиве, то функция возвращает 1 в противном случае возвращает 0.

Если массив символов содержит строки, то вы могли бы просто использовать стандартную функцию C strchr заявленной в заголовке <string.h>

1

С помощью массива вы имеете в виду простую строку? Если это так, вам просто нужно написать функцию, берущую строку и письмо, чтобы найти и вернуть 0, если строка не содержит эту букву else 1 при первом вхождении буквы.

+0

Я не вижу другого способа ответить на этот вопрос ... –

+0

Я пытался это сделать, но есть проблема, которую я не могу решить. Я добавлю это в свой OP сейчас. – KOB

+0

Я так жду вашего редактирования. –

0
int Asterisk() 
{ 
    int v; 

    bool exists = false; 
    for(v=0; v<sizeof Mask; v++){ 
     if(Mask[v] != '*'){ 
      exists = true; 
       break; 
     } 
    } 
return exists; 
} 
Смежные вопросы