【发布时间】:2014-09-03 12:42:18
【问题描述】:
为什么这段代码只计算 datatest 的第一个字符?我需要它来测试字符串是否仅包含字母数字字母和空格字符并将其存储在 records.data 中。 rCount 是记录的计数。这一切都按预期工作,除了 islanum 和 isspace 函数,它只评估字符串中的第一个字符并存储它。方法很好,除了我希望它对整个字符串执行此操作,而不仅仅是第一个字符。 如果数据包含除字母数字字符或空格以外的任何内容,我会将其存储在其他位置
for (i=0; i<=datalength; i++)
{
if ((sourceint < 1025 && sourceint >0)&&
(portint <1025 && portint >0) &&
(typeint < 11 && typeint >=0) &&
(destinationint <1025 && destinationint >0) &&
(datalength < 51) &&
(isalnum(datatest[i]) || isspace(datatest[i])))
{
records[*rCount].destination = destinationint;
records[*rCount].type = typeint;
records[*rCount].port = portint;
records[*rCount].source = sourceint;
for (i=0; i<=datalength; i++)
{
records[*rCount].data[i] = datatest[i];
records[*rCount].data[i+1] = '\0';
}
printf("VALID DATA FROM STRUCT - %i - %i - %i - %i - %s\n", records[*rCount].source, records[*rCount].destination, records[*rCount].type, records[*rCount].port, records[*rCount].data);
}
}
【问题讨论】:
标签: c validation for-loop struct