在我结束第一次循环后,我一直在收集seg错误,对于我的生活,我不知道为什么。 我正在扫描的文件只有18行中的18个字符串。 我认为这个问题是我将malloc称为picks的双指针,但我不知道为什么。 我只是想扫描长度小于15个字符的字符串,所以我没有看到问题。有人可以请帮助。有人能告诉我为什么我在这个简单的C程序中发生seg错误吗?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_LENGTH 100
int main(int argc,char *argv[])
{
char* string = malloc(15*sizeof(char));
char** picks = malloc(15*sizeof(char*));
FILE* pick_file = fopen(argv[l], "r");
int num_picks;
for(num_picks=0 ; fgets(string, MAX_LENGTH, pick_file) != NULL ; num_picks++)
{
scanf("%s", picks+num_picks);
}
//this is where i seg fault
int x;
for(x=0; x<num_picks;x++)
printf("s\n", picks+x);
}
当您访问您无权访问的内存时,总会出现分段错误。在大多数情况下,这意味着你正在访问超出其范围的数组[或未分配的对象/未定义的变量]。请记住,下一次你得到一个 - 这种消除搜索,特别是这样一个简单的程序。 – 2010-03-23 07:59:43