gpt4 book ai didi

c - 读取文本文件并在每次遇到等号时递增变量

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

我正在尝试编写一个程序,该程序将读取 makefile,并在每次在文件中遇到等号“=”时增加计数器。这是我对这样一个程序的尝试(增量不是这个程序的唯一目的,它恰好是我当前陷入困境的点):

#include <stdio.h>
#include <fcntl.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <stdarg.h>
#include <stdbool.h>

struct VarMap {
int data;
int key;
};

// Use a hash table to store the variables - variablename : definition
void processFile(FILE* spData) {

int varCount = 0;
char buffer[1000];
while (fgets(buffer , sizeof(buffer) , spData) != NULL) {
if (buffer[0] == '#') continue;
for (int i = 0; i != '\0' ; i++) {
if (buffer[i] == '=') {
varCount++;
continue;
}
}
}
printf ("varCount has counted %d equals signs.\n\n" , varCount);

// This will hold the variables
struct VarMap variables[varCount];
}

int main(int argc, const char * argv[]) {

char filepath[1000];
printf("Enter the filepath of the Bakefile or bakefile: ");
scanf("%s" , filepath);
FILE* spData = fopen(filepath , "r");
if (spData == NULL) {
printf ("Cannot open file.");
exit(EXIT_FAILURE);
}
processFile(spData);

fclose(spData);
return 0;
}

我们感兴趣的函数是processFile函数。我的推理流程是逐行读取文件到数组 buffer 中,然后解析数组直到找到第一个等号,此时我将递增 varCount继续 到下一行。然后,我可以使用此变量来初始化键盘映射,以存储与变量名称及其内容相对应的值对。

我的问题是,每当我运行程序并输入包含以下内容的文件(显然存在等号,但它们没有被拾起):

calcmarks : calcmarks.o globals.o readmarks.o correlation.o
cc -std=c99 -Wall -pedantic -Werror -o calcmarks \
calcmarks.o globals.o readmarks.o correlation.o -lm


calcmarks.o : calcmarks.c calcmarks.h
cc -std=c99 -Wall -pedantic -Werror -c calcmarks.c

globals.o : globals.c calcmarks.h
cc -std=c99 -Wall -pedantic -Werror -c globals.c

readmarks.o : readmarks.c calcmarks.h
cc -std=c99 -Wall -pedantic -Werror -c readmarks.c

correlation.o : correlation.c calcmarks.h
cc -std=c99 -Wall -pedantic -Werror -c correlation.c

clean:
rm -f *.o calcmarks

正如您可能已经猜到的,我正在尝试用 C 语言编写一个可以处理 Makefile 的程序的实现!可悲的是,这不是一件容易的事。

所以我的问题是;

我做错了什么/遗漏了什么导致 varCount 无法增加?

最佳答案

for循环的测试条件应该是:

buffer[i] != '\0'

感谢@achal 指出这一点。

关于c - 读取文本文件并在每次遇到等号时递增变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52472999/

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