正規表現を使用してファイルを検証する以下のコードに問題があります。ファイルには文字または数字のみを含める必要があります。私の正規表現は次のとおりです。
#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
何が起こっているかというと、3 行目でキックアウトする必要がある最初の行でキックアウトしているということです。これは非常に簡単に解決できると確信していますが、私はそれを理解していないようです。助けていただければ幸いです。また、どのように対処すればよいですか
\n
ファイルの文字?このファイルには数行あります。前もって感謝します。