gpt4 book ai didi

c - 返回值不会改变,始终返回0

转载 作者:行者123 更新时间:2023-11-30 16:17:37 25 4
gpt4 key购买 nike

我对编码有点陌生,我有这样的作业:我需要用 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。这是怎么回事?

最佳答案

您的中断位于错误的条件 block 中。如果您将数字作为每个字符,您将看到返回值 1。基本上,您所编写的内容将在第一次出现非数字时返回 0。由于您的输入中有非数字字符,因此它始终为 0。3333 将返回 1,但 3- 将返回0;任何不包含数字的字符串都不会返回 1。

关于c - 返回值不会改变,始终返回0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56226131/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com