分段错误:在使用regcomp的行上,它会引发分段错误。 我使用gdb来运行程序。
我在尝试:
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <regex.h>
#define LINE_LENGTH 256
main()
{
char *c_char;
char *cp;
char *temp;
regex_t regex;
int reg = 0;
char f_input[] = {"path/path/.pc"};
FILE *input;
input = fopen(f_input, "r");
while (fgets(temp, LINE_LENGTH, input) != NULL)
{
temp = (char*)malloc(sizeof(char)*LINE_LENGTH);
if((cp = strstr(temp, "#define")) != NULL)
{
temp +=7;
memset(c_char, '\0', sizeof(char)*50);
c_char = strtok(temp, " ");
reg = regcomp(®ex, "^[A-Z]", 0);
reg = regexec(®ex, c_char, 0, NULL, 0);
if (reg == REG_NOMATCH)
{
fprintf("%s should be in upper case.", c_char);
}
}
}
}
来到生产线后:&#34; reg = regcomp(&amp; regex,&#34; ^ [A-Z]&#34;,0);&#34;我试图打印正则表达式的价值...... &#34; p regex&#34;。 它打印:
"{buffer = 0x0, allocated = 0, used = 0, syntax = 0, fastmap = 0x0.........}"
答案 0 :(得分:0)
我认为崩溃可能是由以下代码造成的:
memset(c_char, '\0', sizeof(char)*50);
程序开始时 c_char
未初始化:
main()
{
char *c_char;
然后在while
循环中,当您第一次调用memset()&#39; c_char&#39;仍然没有初始化。因此,您将无效指针传递给memset()