下面的代码使用正则表达式验证文件时遇到问题。我的文件只能包含字母或数字。我的正则表达式是:
#define to_find "^[a-zA-Z0-9]+$"
它位于我的 main.h 文件中。下面的代码在我的 main.c
#include <ctype.h>
#include <errno.h>
#include <regex.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include "main.h"
int main(int argc, char * argv[])
{
int ret_val;
regex_t regex;
FILE *fp;
char line[1024];
if (regcomp(®ex, to_find, REG_EXTENDED) != 0)
{
fprintf(stderr, "Failed to compile regex '%s'\n", to_find);
return EXIT_FAILURE;
}
if (argc > 2)
{
printf("Usage: tree OR tree [filename]\n");
return EXIT_FAILURE;
}
else if (argc == 2)
{
fp = fopen(strcat(argv[1],".dat"), "r");
printf("file opened\n");
while ((fgets(line, 1024, fp)) != NULL)
{
line[strlen(line) - 1] = '\0';
if ((ret_val = regexec(®ex, line, 0, NULL, 0)) != 0);
{
printf("Error: %s\n", line);
return EXIT_FAILURE;
}
}
fclose(fp);
printf("File closed\n");
}
return 0;
}
我正在阅读的文件名为 names.dat,其中包含:
int
char
[
double
正在发生的事情是它在第一行踢出它应该在第三行踢出。我确信这很容易解决,但似乎我还没有弄清楚。我将不胜感激任何帮助。还有,我该如何处理
\n
文件中的字符?该文件将有几行。提前致谢。