gpt4 book ai didi

c - 我想从 c 中的文件中逐行读取并检查每一行是否是整数

转载 作者:行者123 更新时间:2023-11-30 19:05:07 25 4
gpt4 key购买 nike

如何逐行读取文件并检查每一行是否为整数?

FILE *fp;
fp = fopen("users.txt", "r");


while(fscanf(fp, "%d", &IDRead)!=EOF)
{
enter code here
}

fclose(fp);

最佳答案

您可以使用fgets()读取一行并 isdigit()检查字符串中的每个字符是否是数字。

首先,我们可以创建一个 isnumber() 函数来检查字符串中的每个字符是否是数字。为了处理负数,我们可以检查第一个字符是数字还是“-”。

bool isnumber(char* str) {
int len = strlen(str);
if (len <= 0) {
return false;
}

// Check if first char is negative sign or digit
if (str[0] != '-' && !isidigit(str[0])) {
return false;
}

// Check that all remaining chars are digits
for (int i = 1; i < len; i++) {
if (!isdigit(str[i])) {
return false;
}
}

return true;
}

我们的 isnumber() 函数假设字符串没有前导或尾随空格,而从 fgets() 检索到的字符串可能两者都有。我们需要一个函数来去除字符串两端的空格。您可以在 this answer 中了解如何执行此操作。 .

现在我们可以在 while 循环中使用 isnumber() 函数,通过 fgets() 检查文件中的每一行。

FILE *fp = fopen("users.txt", "r");
if(!fp) {
perror("Failed to open file");
return -1;
}

const int MAX = 256;
char line[MAX];
while (fgets(line, MAX, fp) != NULL) {
stripLeadingAndTrailingSpaces(line);
printf("%s\t", line);

if (isnumber(line)) {
printf("is a number\n");
}
else {
printf("is not a number\n");
}
}

fclose(fp);

关于c - 我想从 c 中的文件中逐行读取并检查每一行是否是整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50470982/

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