如果我有两个结构
typedef struct {
int number_of_lines;
char lines[MAX_CHAPTER_LINES][MAX_STR_SIZE + 1];
} Chapter;
typedef struct {
char name[MAX_STR_SIZE + 1];
int number_of_chapters;
Chapter chapters[MAX_CHAPTERS];
} Book;
Run Code Online (Sandbox Code Playgroud)
我创建了一个章变量:
Chapter x1;
Run Code Online (Sandbox Code Playgroud)
它的两个成员的价值会被初始化为什么?这是垃圾吗?还是零?在我的代码中我得到0了int,但是我的TA告诉我这将是垃圾?
另外,如果我要声明一个章节数组:
Chapter chapters[30];
Run Code Online (Sandbox Code Playgroud)
是否会填充30个带有0/ NULL值元素的结构?或者用垃圾值元素初始化?
如果我要向stdout打印提示:
printf("> ");
Run Code Online (Sandbox Code Playgroud)
然后我说
fgets(tester, 80, stdin);
Run Code Online (Sandbox Code Playgroud)
fgets会读取包括">"在内的整行,还是会在此之后开始?
我试图将total_elements设置为0,但它最终会给我一个随机的大数字.我对为什么会发生这种情况感到非常困惑.这是我的结构:
typedef struct sack {
Element *elements;
size_t total_elements;
} Sack;
typedef struct element {
char *name;
int occurances;
struct element *next;
} Element;
Run Code Online (Sandbox Code Playgroud)
这是代码:
void init_sack(Sack *sack) {
if(!(sack = calloc(1, sizeof(Sack)))) {
return;
}
sack->elements = NULL;
sack->total_elements = 0;
return;
}
Run Code Online (Sandbox Code Playgroud) 怎么来printf("提示:")不会立即打印?我尝试过fflush(stdout)并放置一个\n,但这些都没有.它仅在"See you"打印时打印:
int main() {
char line[1025];
char command[80], argument[80];
char argv[3][80];
int i, pid;
*(argv[2]) = '\0';
while((fgets(line, 1024, stdin))) {
printf("prompt:");
line[1024] = '\0';
sscanf(line, " %s %s ", command, argument);
if(strcmp(command, "exit") == 0 || strcmp(command, "hastalavista") ==
0) {
printf("See you\n");
exit(0);
}
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)