Tag: 结构

如何在c中写入特定的文件行?

所以我有一个项目,我正在创建一个允许用户写入文件的程序,如下所示: #include #include FILE *fd; FILE *fw; struct store { char Word[512]; char NWord[512]; } stock; struct store2 { char Definition[512]; } stock2; char done=’y’; int count=1; int c=0; int d=0; int main(void) { fw=fopen(“Test Z W.txt”,”w”); fd=fopen(“Test Z D.txt”,”w”); do { printf(“Word %d: “,count); gets(stock.Word); while((c= getchar()) != ‘\n’ && c != EOF); printf(“Definition […]

为另一个结构内的结构数组分配内存

我真的不知道这里的问题是什么。 编译器说它没关系,但是当我运行它时,可执行文件崩溃了(我相信这是一个分段错误问题)。 他们说两个人总是比一个人好,所以我希望你们能找到我错过的任何东西。 好的,所以就是这样:我有2个结构: struct _Color { unsigned char r,g,b; char *pchars; }; //typedef to Color in header file struct _XPM { unsigned int width; unsigned int height; unsigned char cpp; unsigned int ncolors; Color *colta; //collor table unsigned int *data[]; }; //typedef to XPM in header file 然后,在一个函数中,我为XPM结构分配内存,然后为XPM结构中的Color数组分配内存(我不会在这里编写故障安全代码): XPM *imagine; //received as a parameter […]

C fscanf输入validation

我正在使用带有fscanf的for循环将一个文件中的5列输入到一个structs数组中。每个struct有5个变量:1个字符串和4个int,第一个fscanf读取一个字符串名称并将其存储为另一个结构的一部分4个输入整数到所述结构中(全部到结构的不同变量)。 正常输入它工作正常。 但是当一个字符输入到其中一个整数列时,scanf为其中的0和该结构的其余值放置并使用char就好像它是一个新结构,即它跳过它之后的所有内容并使用不需要的char作为名称将行的其余值作为输入。 我的问题是,是否有办法忽略该输入产生的不需要的结构,或者只是简单地防止识别出char并且特定的scanf被滑落? 我已经尝试使用fgets而不是扫描,但它不起作用,而且我不能使用0来排序不需要的值,因为0可以作为正常值输入。 我理解,理想情况下看看代码会有所帮助,但我宁愿不以plaigirism为理由发布它,因为这是针对大学而且我不渴望那些plaigirism会议。 如果问题没有得到很好的解释,请提前致谢并对不起。 🙂

如何将文本文件中的值分配给C中的数组结构?

我必须在C做选举。 共有7名候选人和365票。 我需要使用一组结构来做到这一点。 我需要从文本文件中读取候选人的每个名字和他们得到的票数。 最后我需要输出选举的胜利者。 以下是我的代码示例 #include #include #include struct candidates { char name[20]; int votes; }; int main() { //Counter int i = 0; int gVotes = 0; //Votes counter int v = 0; //Sploit Vote int spVote = 0; struct candidates electionCandidate[7]; FILE *fp; fp = fopen(“elections.txt”, “r”); for(i=0;i<7;i++) { char * aNames […]

为什么我会出现分段失败?

这是我的代码。 我正在做一些C练习来处理文件 我不认为结构定义是问题,但我也发布它以给出一些上下文。 typedef struct carType Car; struct carType { int vehicleID; char make[20]; char model[20]; int year; int mileage; double cost; Car *next; }; 我认为这个function会导致分段失败。 void TextLoad(Car *headPointer) { char fileName[20]; //prompt user for name of textfile to print to scanf(“%s”, fileName); FILE *fpt; //estabish an IO connection fpt = fopen(fileName, “r”); //current car […]

指向未知或不完整结构的指针

这个问题是对问题概念的测试。 为什么将类型定义为指向C中未定义结构的指针是有效的? 我知道这不是一个有用的程序,请弃权说“你没有定义这个和那个”。 讨论是关于opaque类型的指针aritmethic。 很抱歉打扰了太多人,但无论如何答案都很有用。 这个程序: struct st1 { int a,b; }; struct st2; typedef struct st2 *foo; typedef struct foo *bar; void main(void) { struct st1 *net=0; foo ft1=0; bar test=0; net++; ft1++; test++; } 用gcc编译时给出以下内容: pc:~$ cc tmp2.c tmp2.c: In function ‘main’: tmp2.c:17:6: error: increment of pointer to unknown structure ft1++; ^ tmp2.c:17:3: […]

这是C中的Flexible Array Struct成员吗?

可能重复: C中的灵活arrays成员 – 糟糕吗? 我阅读了以下代码: struct hello { int number; int data[1]; }; 我知道Flexible数组成员允许我们可以将最后一个元素声明array of unspecified size的array of unspecified size如下所示: struct hello { int number; int data[]; }; 在这个struct ,最后一个元素没有指定大小,那么这两个元素之间的区别是什么? 第一个声明是什么意思?

将动态分配的结构写入文件

假设我们有以下结构: struct Something { int i; }; 如果我想在文件中写入这种类型的任何数据(动态分配),我这样做: struct Something *object = malloc(sizeof(struct Something)); object->i = 0; // set member some value FILE *file = fopen(“output_file”, “wb”); fwrite(object, sizeof(struct Something), 1 file); fclose(file); 现在,我的问题: 我们如何使用包含指针的结构来做到这一点? 我使用相同的方法测试,它工作正常,数据可以读取,但我想知道是否有任何风险?

如何在C中搜索图结构中的特定节点?

并非我有时间适当地讨论这个问题以得出结论并调整我的代码,因为学校项目的第一阶段(三个)是24小时,但至少我需要知道我是否做出了正确的决定。 我正在使用链接列表,这是我的结构: typedef struct sCity { int cityID; char *cityName; struct sCityLink *links; struct sCity *next; } nCity, *City; typedef struct sCityLink { City cityLinkParent; City cityLinkTo; struct sCityLink *next; } nCityLink, *CityLink; 基本上,我有很多城市,这些城市连在一起,就像一个图表。 例如,A,B,C,D和E它们按此顺序插入到结构城市中 。 然后,我将A连接到B,C和D,B连接到C,D,E,C连接到D和E,连接到D连接到E. 现在,假设我需要去城市E.这是链表中的最后一个,并且一直遍历链表需要时间。 也许不是这个有5个城市的例子,但在真正的应用程序中,我应该至少支持10,000个城市。 但最短路径是从A到C(也就是起点)从E到E(或者它可能是ADE或ABE,无所谓)。 我的结构是否允许我找到从A到E的最短路径,而不是逐个遍历整个链表? 如果没有,我做错了什么? 如果是的话,我该怎么做? 我不知道怎样才能找到这样的路径……

使用结构不同的代码与c程序联系经理

现在我遇到了另一个问题,在我改变了如下所示的编码之后,它仍然显示出错误。 在编码内部,没有任何红色下划线,因此我无法找出错误的位置。 那么这个编码有什么错误吗? struct contact { char name[20],email[20]; int hpnum; }add; int option; FILE *f; void addcontact(struct contact list[100]); void read(struct contact list[100]); int main (void) { struct contact list[100]; system(“cls”); printf(“==========Welcome to Jeffery’s Contact System Management==========\n”); printf(“\t\t\tContact System Main Menu\n”); printf(“[1] Create a New Contact\n”); printf(“[2] Modified Existing Contact\n”); printf(“[3] Delete Existing Contact\n”); printf(“[4] […]