Gcc Regcomp抛出分段错误
分段错误:在使用regcomp的行上,它抛出分段错误。 我已经使用gdb来运行这个程序 我正在努力:Gcc Regcomp抛出分段错误,gcc,gdb,Gcc,Gdb,分段错误:在使用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; in
#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);
}
}
}
}
我认为崩溃可能是由以下代码引起的:
memset(c_char, '\0', sizeof(char)*50);
程序启动时,c_char
未初始化:
main()
{
char *c_char;
然后在
while
循环中,当您第一次调用memset()时,“c_char”仍然未初始化。因此,您向memset()
传递了一个无效指针。您的问题提供的信息约为零,无法回答。是什么让您认为您提供的代码行与实际崩溃有关?什么是崩溃堆栈跟踪?嗨,我无法粘贴代码或任何其他屏幕截图,所以我编辑了上面的代码。请查收。
main()
{
char *c_char;