gpt4 book ai didi

c - 为什么此代码在 for 循环 C 中时仅评估第一个字符

转载 作者:太空宇宙 更新时间:2023-11-04 02:02:49 26 4
gpt4 key购买 nike

为什么这段代码只评估 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);
}
}

最佳答案

因为您使用变量 i 作为两个 for() 循环的迭代器。尝试使用不同的变量。内部循环直到 i > datalength,这导致外部循环也终止,因为它使用相同的条件。

关于c - 为什么此代码在 for 循环 C 中时仅评估第一个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24722300/

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