gpt4 book ai didi

c - 使用 isalpha() 在文件中跳过一行

转载 作者:太空宇宙 更新时间:2023-11-04 05:28:15 25 4
gpt4 key购买 nike

我正在使用 isalpha() 来确定该行是否有字符,它显示“90 1 0”行包含字母字符。

这里是相关代码

bool digitTest(char *test, int arysize)
{
int i;
for (i =0; i<arysize; i++)
{
if ((isalpha(test[i])) != 0){

return 0;
}

if (i==arysize)
return 1;
i++;
}
return 1;
}

在这里调用

char buffer[4096] = {};

while(NULL!=fgets(buffer, sizeof(buffer), fp)){
if (digitTest(buffer, 4096) == 0){

printf ("contains alpha\n");
continue;
/*printing code if there is no alphabetic characters below, i do not believe it is relevant*/

这是输出

1
1
1
contains alpha
contains alpha
contains alpha
25123.90
54321.23
6

和输入

1
1
1
89 23.5 not a number
90 1 0
-5.25 not a number 10000
25123.90 54321.23 6

最佳答案

代码有几个问题:

  • 您不应该检查所有缓冲区。检查缓冲区直到 \0。因为 fgets 的输出是 C 风格的字符串。

  • 第二个问题是函数digitTest 中的额外i++。你应该删除它。

  • 您不再需要 arysize

改用这个digitTest函数

int digitTest(char *test)
{
int i;
for (i=0; test[i] && test[i] != '\n'; i++)
{
if (isalpha(test[i]) != 0)
return 0;
}
return 1;
}

(可能有小bug,我没测试)

然后这样调用它:

while( fgets(buffer, sizeof(buffer), fp) ) {
if (!digitTest(buffer)) {
printf ("contains alpha\n");
continue;
}
}

关于c - 使用 isalpha() 在文件中跳过一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15911913/

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