📄 test.c
字号:
/*======================================*\
test.c
\*======================================*/
#include <stdio.h>
#include <string.h>
#define MAX_LENGTH 60
#define END_OF_ARRAY '\0'
typedef struct week{
char name[MAX_LENGTH];
int number;
} Week;
/*===================================*\
函数: TestAllocSpace
问题1:此函数的作用?
\*===================================*/
int TestAllocSpace(int num, char **list)
{
/*-------------------------------------------------------------*\
问题2:为什么将**list传递给函数而不是*list?
问题3:"if else"语句的作用是什么?
\*-------------------------------------------------------------*/
if (num == 0)
*list = (char *)calloc(1, sizeof(Week));
else
*list = (char *)realloc(*list, sizeof(Week)*(num+1));
return(0);
}
/*===============================*\
函数:GetLine
问题4:这个函数的作用是什么?
\*===============================*/
int GetLine(FILE *fp, char string[MAX_LENGTH])
{
int len;
while (fgets(string, MAX_LENGTH, fp) != NULL)
{
len = strlen(string);
if (len > 1)
{
string[len-1] = END_OF_ARRAY;
return (0);
}
}
return (-1);
}
/*===================================*\
函数: main
作用:启动程序
\*===================================*/
int main(int argc, char *argv[])
{
char line[MAX_LENGTH];
Week *list=NULL, *p;
int i, num=0;
FILE *fp;
/*-------------------------------------------------------------*\
问题5:这个if语句判断什么?
\*-------------------------------------------------------------*/
if( argc < 2 )
exit(-1);
/*-------------------------------------------------------------*\
问题6:这个if语句判断什么?
\*-------------------------------------------------------------*/
fp = fopen( argv[1], "r");
if( fp == NULL )
/*-------------------------------------------------------------*\
问题7:这个exit语句的作用?
\*-------------------------------------------------------------*/
exit(-1);
while ( !GetLine(fp, line) )
{
/*-------------------------------------------------------------*\
问题8:这个语句执行后,list指针指向的内容是什么?
\*-------------------------------------------------------------*/
TestAllocSpace(num, &list);
/*-------------------------------------------------------------*\
问题9:这个语句作用是什么?
\*-------------------------------------------------------------*/
strcpy(list[num].name, line);
p = &(list[num]);
p->number = num;
num++;
}
/*-------------------------------------------------------------*\
问题10:根据week.dat中的内容试说出打印输出的内容。
\*-------------------------------------------------------------*/
for(i = num-1; i >= 0; i--)
printf("%d) %s\n", list[i].number, list[i].name);
/*-------------------------------------------------------------*\
问题11:这个语句执行后,list指针指向的内容是什么?
\*-------------------------------------------------------------*/
free(list);
/*-------------------------------------------------------------*\
问题12:这语句的作用是什么?
\*-------------------------------------------------------------*/
fclose(fp);
return(0);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -