我正在做一项计算机编程作业,以读取文件中的行并确定它是否是 a(n):
不纯回文:忽略标点符号和大小写
例如:Madam I'm Adam是不纯回文。
纯回文:检查标点符号和大小写
例如无星直播的恶鼠纯回文
我已经为这两种情况创建了函数,它们工作正常。
我的问题在于打开文件
我有一个从
argv[]
中读取文件名的函数,它的意思是计算不纯/纯回文的数量和行数。而且它也有点用但是!!
当我使用我放入的
printf
函数检查输出时,我相信文件的地址包含在使用 gets 时。除此之外它工作正常。当我将文件名硬编码到其中时,我的代码也能正常工作。我认为这与指针和内存地址有关,但我很困惑。
我读过一个类似的问题,但没有提供答案,因为操作能够解决它。
这里是链接:Opening a file inside a function using fopen
我认为这道题没有必要包括我的纯回文函数和不纯回文函数。如果我错了,我很乐意将它们包括在内。
我的阅读文件功能:
void read_file(const char* filename)
{
bool impure = false;
bool pure = false;
int purecount = 0;
int impurecount = 0;
int linecount = 0;
FILE *file = fopen(filename, "r");
if (file != NULL)
{
char line[FILE_LEN];
char line1[FILE_LEN];
while (fgets(line, sizeof line, file) != NULL)
{
printf("%s\n", line);
sscanf(line, "%[^\n]", line1);
pure = is_a_pure_palindrome(line1);
impure = is_an_impure_palindrome(line1);
printf("%s\n", line);
if (pure == true)
purecount++;
else if (impure == true)
impurecount++;
linecount++;
}
fclose(file);
printf("There are %d pure palindromes and %d impure palindromes and %d lines\n", purecount, impurecount, linecount);
}
else
{
perror("fopen");
}
return;
}
我的主要功能:
int main(int argc, char *argv[])
{
int i = 0;
for (;i< argc; i++)
{
read_file( argv[i]);
}
return EXIT_SUCCESS;
}
argv[0]
代表程序执行路径名。
C/C++ 中的参数从 1. 开始
改为:
int i = 1;
for (;i< argc; i++)
{
read_file( argv[i]);
}