各位好
最近在自學C語言
有學長給我了他之前去面試時的考題 不過我們都是程式菜逼八
題目主要為找出程式碼中有錯誤的地方
有些看不太懂哪邊有問題 要煩請各位大大解答了 謝謝
1.
void test()
{
char a[32];
char b[48];
read(0,a,sizeof(a));
strcpy(b,a);
}
2.
char* fun();
void test
{
char *buf;
int len;
buf = fun();
len = strlen(buf);
buf[len-1] = '\0';
}
3.
int test(char *buffer)
{
char tmpline[256], *line;
if (buffer == NULL)
return 0;
memset(tmpline, 0, sizeof(tmpline));
line = strncpy(tmpline, buffer, sizeof(tmpline));
if (line == NULL)
return 0;
line[strlen(line)] = 0;
return 1;
}
4.
typedef struct list
{
char * next;
} list;
typedef struct z
{
list l;
} z;
void test()
{
z *x = malloc (sizeof(z));
if (!x)
return;
x->l.next=1;
free(x->l.next);
}
5.
c假設為>=0的整數
void test()
{
char *x = “0123456789”;
if (c)
x = malloc(1);
free(x);
}
這題run過程式後是free(x)這邊出現error
是因為一開始指標字串x與後面分配的記憶體不一致嗎?
6.
int *test(unsigned int n)
{
int aux;
int *p;
if (n == 1)
{
p = &aux;
}
else
{
p = (int *)malloc(n * sizeof(int));
}
return p;
}
此題是否為置底13誡的第5題那樣
在函式中回傳一個指向區域性自動變數的指標會失效?
以上幾題百思不得其解 麻煩各位大大為蔡逼八解惑了
感謝!!