我試圖寫它使用的realloc(),getchar函數()和一些指針運算存儲字符數組在內存中的小程序。我有一個名爲「inputArray」(在convert.c中)的函數,它接收一個指向char的指針(在main.c中聲明爲NULL),然後重新分配一個char,直到getchar()得到'\ n'字符。函數似乎工作正常,但是當我嘗試在main.c中打印字符串時,出現「分段錯誤(核心轉儲)」錯誤。我一直在尋找幾個小時,找不到問題所在。謝謝!嘗試使用realloc的(),獲得核心轉儲
的main.c:
# include "convert.h"
int main()
{
char * string = NULL;
inputArray(string);
printf("%s", string);
free(string);
return 0;
}
convert.c:
#include "convert.h"
void inputArray(char * array)
{
/*pointer to the array*/
char * ptr = NULL;
/*stores the char*/
char c = 0;
/*counter used for pointer arithmetic*/
int count = 0;
/*loop for getting chars in array*/
while ((c = getchar()) != '\n')
{
array = realloc(array, sizeof(char));
ptr = array + count;
*ptr = c;
++count;
}
/*add the null char to the end of the string*/
array = realloc(array, sizeof(char));
ptr += count;
*ptr = '\0';
}
CONVERT.H:
#include <stdio.h>
#include <stdlib.h>
void inputArray(char * array);
搜索並閱讀*模擬c *中的引用傳遞。 –
'sizeof(char)'總是會是1 .....(好吧,如果你使用雙寬字符,也許是2),但它是一個固定的大小,這不是你想要的。 – gilez