Возвращаемое значение не изменится, всегда возвращается с 0 - PullRequest
0 голосов
/ 20 мая 2019

Я вроде новичок в кодировании, и у меня есть это назначение: мне нужно написать функцию на C, которая проверяет, правильно ли отформатирована данная строка, и если нет, она должна возвращать 0. Строка должна содержать только буквыи разделитель "-".Так, например: «aAa - bBb» является правильным, поэтому возвращаемое значение должно быть 1, но для «a-1 - bB3» оно должно возвращать 0.

Вот мой код:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>

int functiontest(char* text){
   char* piece = strtok(text," - ");  //breaks the given string into 
   int returnvalue = 1;               //smaller strings

    while (piece != NULL) {
        for (int x = 0; x < strlen(piece); x++) {
            if ((isalnum(piece[x]))) {
                returnvalue = 1;
            } else {
                returnvalue = 0;
                break;
            }  
        }                                 

        piece = strtok(NULL," - ");
    }

    return returnvalue;
}

int main() {
    char texttest[11] = "akod - kljp";

    printf("%s", &texttest);

    int test = functiontest(texttest);

    printf("\n%d",test);
    return 0;
}

Независимо от того, как я изменяю строку texttest, функция всегда возвращает 0. Что с ней не так?

1 Ответ

0 голосов
/ 20 мая 2019

Ваш разрыв в неправильном условном блоке.Если бы вы имели цифру в качестве каждого символа, вы бы увидели возвращаемое значение 1. По сути, то, что вы написали, будет возвращать 0 при первом появлении нецифры.Поскольку в вашем вводе нет цифр, всегда будет 0. 3 или 333 вернет 1, но 3- вернет 0;строка, не содержащая цифр, никогда не вернет 1.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...