【发布时间】:2013-04-09 20:31:49
【问题描述】:
我正在使用 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
【问题讨论】:
-
您是否在调试器中检查过哪些行被传递以及它们包含什么?
-
你不是通过传入 4096 来循环超过缓冲区的末尾来测试函数吗?它可能正在访问有有效字符的内存
-
@bash.d 我不知道该怎么做对不起。
-
@75inchpianist 我应该让缓冲区更大吗?
-
不,您应该检查整个缓冲区,或者检查缓冲区直到您遇到终止的空字符。以先到者为准。