C 如何修复嵌套结构问题?

C 如何修复嵌套结构问题?,c,C,我正在编写一个程序,该程序必须从分隔文件中读取数据,然后打印输出。分隔符是一个磅符号“#”。现在我一直收到错误“未找到字段:buildingType”。我知道这是因为我的嵌套结构,但对于我的程序,我被告知它应该如何编写。我的parseListing()方法的返回类型需要为void,这就是我认为可能会出现错误的原因。我需要找到方法来解决这个问题,而不必从void更改我的返回类型。此外,在我的分隔文件中,有些值列为“N/A”,我需要在打印文件中的字符时不显示这些值。我的分隔文件看起来像这样,只是每行

我正在编写一个程序,该程序必须从分隔文件中读取数据,然后打印输出。分隔符是一个磅符号“#”。现在我一直收到错误“未找到字段:buildingType”。我知道这是因为我的嵌套结构,但对于我的程序,我被告知它应该如何编写。我的parseListing()方法的返回类型需要为void,这就是我认为可能会出现错误的原因。我需要找到方法来解决这个问题,而不必从void更改我的返回类型。此外,在我的分隔文件中,有些值列为“N/A”,我需要在打印文件中的字符时不显示这些值。我的分隔文件看起来像这样,只是每行之间没有空格(我在文本框中放入空格是为了在这个站点上格式化)


这是到目前为止我的代码

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct {
    char buildingType[10];
    int numBedrooms;
    int numBathrooms;
    }Propertylisting;

typedef struct {

Propertylisting propertylisting;
    char address[100];
    char unitNum [10];
    char city [50];





void printPropertyListing(Listing l) {
    printf("%s %s %s\n%s %d %d %d\n\n", l.address, l.unitNum, l.city, l.buildingType, l.numBedrooms, l.numBathrooms, l.listPrice);
}
#包括
#包括
#包括
类型定义结构{
charbuildingtype[10];
整数;
室内运动室;
}房地产上市;
类型定义结构{
属性列表属性列表;
字符地址[100];
char-unitNum[10];
查尔城[50];
void printPropertyListing(清单l){
printf(“%s%s%s\n%s%d%d\n\n”,l.address,l.unitNum,l.city,l.buildingType,l.NumberOms,l.NumberAthrooms,l.listPrice);
}

这里,您的
属性列表是
列表
结构中的一个字段。您正试图分配给
列表[n]。buildingType
,它在
列表
结构中不存在

它们确实存在于
PropertyListing
结构中,但是其中一个包含在
列表
结构中,名称为
PropertyListing
。您只需将
PropertyListing
作为标准结构字段访问,然后通过该成员访问
PropertyListing
的成员例如,请参见以下代码:

listing[n].propertyListing.buildingType; // For the building type string
listing[n].propertyListing.numBedrooms;  // For the number of bedrooms

等等。

字符分隔符['#']
应该做什么?这样你就定义了一个包含35个字符的数组,而不分配任何值。@halex字符分隔符['#']被用作程序用来分隔值的分隔符字段。或者我是这么想的。
void parselists(…
:返回类型
void
。啊,好:)。
分隔符必须是一个包含所有分隔符的C字符串,在您的情况下,只能是
。Do
char*delimiter=“#”
(注意使用
而不是
来获取以空结尾的字符串,而不仅仅是普通字符)@halex谢谢。希望能奏效。我现在无法测试它,因为我遇到了其他错误。哈哈。谢谢你认为这似乎解决了buildingType问题,但现在几行下来它给了我另一个错误,说“NumberDrooms”未声明。你知道它为什么给我这个吗?@user3672889,
NumberDrooms
又是问题的一部分内部结构,因此您需要使用相同的技术来访问它。另外,另一个
numberDrooms
定义不存在。但是您确实在它上面定义了一个名为
length
的字段,这可能是您想要的?谢谢@slugonamission。我犯了一个愚蠢的错误,我忘记了更改这些变量。该方法中的所有内容都是无效的ems现在可以工作了。不过我还有一个问题。在底部,您将看到我的printPropertyListing()方法。在那一行,它给了我一个错误,说“未找到字段:buildingType”"我想这是因为你之前告诉我的,它不是列表中的一个字段。我不知道如何修复它。在它之前运行3个变量,没有错误。它只是一个建筑类型变量,它给了我一个错误。接下来的2个可能还有什么建议吗?我得到了它,我只是把l.PropertyList.buildingype LOL。再次感谢。不幸的是,现在我的程序在提示符下运行时崩溃了:(