Tag: segmentation fault

将一个字符串数组作为参数传递给C中的函数

我想要一个简单的函数,它接收一个字符串并在一些解析后返回一个字符串数组。 所以,这是我的function签名: int parse(const char *foo, char **sep_foo, int *sep_foo_qty) { int i; char *token; … strcpy(sep_foo[i], token); /* sf here */ … } 然后我称之为: char sep_foo[MAX_QTY][MAX_STRING_LENGTH]; char foo[MAX_STRING_LENGTH]; int sep_foo_qty, error; … error = parse(foo, sep_foo, &sep_foo_qyt); … 这样我在编译时会收到警告: warning: passing argument 2 of ‘parse’ from incompatible pointer type 然后在标记为/ * sf的行中执行期间出现分段错误* / 我的C代码有什么问题? […]

strncpy导致分段错误

我只是乱搞strncpy。 我的程序看起来像这样 typedef struct { char from_str[10]; }test; main () { test s1; memset(&s1,0,sizeof(test)); char src[10]=”himansh”; char dest[10]; memset(dest,0,10); src[3]=’\0′; printf(“src is %s and strlen is %d \n”, src,strlen(src)); fflush(stdout); strncpy(s1.from_str,src,100); printf(“s1.from_str is %s , src is %s \n”, s1.from_str,src); return 1; } 在我执行strncpy之前,我在“src”字符串中添加了一个“\ 0”字符,“src”字符串的长度变为3,目标数组的大小为10。但是在strncpy中我将要复制的字节数复制为100 。 这意味着我的源字符串以NULL结尾。 现在strncpy像任何字符串函数一样,即使我提供的字节数大于3(在本例中为100),也应该尝试仅复制3个字节。 它做到了,但我也得到了分段错误。 我的结果如下所示 src is him and strlen […]

fclose()导致分段错误

我有一个制表符分隔的文本文件,我正在解析。 其第一列包含格式为chrX字符串,其中X表示一组字符串,例如“1”,“2”,……,“X”,“Y”。 当解析文件时,这些都存储在称为chromosome的char* 。 文本文件按字典顺序排在第一列,即,我将有一些以“chr1”开头的行,然后是“chr2”等。 在每个“chrX”条目中,我需要打开与此条目关联的另一个文件: FILE *merbaseIn; // loop through rows… if (chromosome == NULL) openSourceFile(&chromosome, fieldArray[i], &merbaseIn, GENPATHIN); else { if (strcmp(chromosome, fieldArray[i]) != 0) { // new chromosome fclose(merbaseIn); // close old chromosome FILE ptr free(chromosome); // free old chromosome ptr openSourceFile(&chromosome, fieldArray[i], &merbaseIn, GENPATHIN); // set up new chromosome FILE ptr […]

修改字符串时出现分段错误

我在这段代码中得到了分段错误错误,但不知道为什么? #include int main(void) { char *ptr = “Linux”; *ptr = ‘T’; printf(“\n [%s] \n”, ptr); return 0; }

使用strcat进行分段故障

这是我的代码: char *name, name_log=”log-“; ——从用户那里得到’名字’—– strcat(name_log, name); char ext[] = “.log”; strcat(name_log, ext); 我最终需要的是name_log =“log-‘name’.log”,但我得到了一个分段错误错误:((。我做错了什么,我该如何解决?Thx

执行printf()和分段错误

#include int main() { char *name = “Vikram”; printf(“%s”,name); name[1]=’s’; printf(“%s”,name); return 0; } 终端上没有打印输出,只是出现分段故障。 但是当我在GDB中运行它时,我得到了以下 – Program received signal SIGSEGV, Segmentation fault. 0x0000000000400525 in main () at seg2.c:7 7 name[1]=’s’; (gdb) 这意味着程序在第7行接收SEG错误(显然我不能在常量字符数组上写入)。 那么为什么不执行第6行的printf()?

strcpy()中的分段错误

我有这样的基本结构 typedef struct struck { char* id; char* mat; int value; char* place; } *Truck; 像这样的function创建了该结构的新“实例”: Truck CTruck(char* id, char* mat, int value, char* place) { Truck nT = (Truck) malloc(sizeof (Truck)); nT->value = value; strcpy(nT->id, id); strcpy(nT->mat, mat); strcpy(nT->place, place); return nT; } 我在第一个strcpy遇到错误。 它编译没有问题。

strtok给出分段错误

为什么下面的代码给出了Seg。 最后一行出错? char* m=ReadName(); printf(“\nRead String %s\n”,m); // Writes OK char* token; token=strtok(m,’-‘); 如上所述,读取字符串打印没有问题,但为什么不能拆分为令牌?

字符串文字:指针与字符数组

在这个声明中: char *a = “string1” 什么是字符串文字? 是string1吗? 因为这个线程C和C ++中字符串文字的类型是什么? 说些不同的东西。 据我所知 int main() { char *a = “string1”; //is a string- literals allocated memory in read-only section. char b[] = “string2”; //is a array char where memory will be allocated in stack. a[0] = ‘X’; //Not allowed. It is an undefined Behaviour. For me, it […]

主要之前的分段故障

所以我遇到了一个问题,我的代码在我的任何主要实际运行之前导致了分段错误。 我以前从来没有遇到这种情况,而且我几乎没有四分之一的编码经验,所以我不确定是否有什么我做错了。 一切都在编译,至少在我的计算机上,但在运行它时我的主要内容从未到达。 上下文:我正在尝试在邻接矩阵中连接顶点和边缘,然后使用Prim的算法来构建MST,但这是为了以后。 我构建了一个头文件,最初只包含对结构和函数的typdef调用。 但是,我将结构定义切换到头文件,因为我遇到了内存错误; 因此,为什么我认为结构存在问题。 graph.h: //Leland Wong 00000897031 //graph header file #include #include #include #include #ifndef GRAPH_H #define GRAPH_H typedef struct vertex { double longitude; double latitude; char city[30]; int index; int visited; //0: not visited, 1: visited, 2: visited struct edge* nexte; struct vertex* nextv; double projected; }VERTEX; typedef struct edge […]