void search(struct _data *BlackBox, char *name, int size)
- 此函數 將獲得傳遞給它的結構的動態數組,我們正在查找的名稱爲 ,以及數組的大小。此功能將搜索動態 數組的名稱。在C中搜索結構
typedef struct _data
{
char* name;
long number;
} _data;
int scan(FILE *(*stream));
struct _data *load(FILE *stream, int size);
void search(struct _data *Blackbox, char *name, int size);
int main()
{
int size = scan(&stream);
rewind(stream);
_data *data = load(stream, size);
char input;
printf("Please Input Search Name: ");
scanf("%s", input);
while (input != NULL)
{
search(data, input, size);
}
}
void search(struct _data *Blackbox, char *name, int size)
{
for (int i=0; i<size; i++)
{
if (strcmp(name,Blackbox[i].name) != 0)
{
printf("Success");
}
else
{
printf("Name Not Found");
}
}
}
但我得到以下輸出
Output:
LINES: 2
ron 7774013
jon 7774014
Please Input Search Name: ron
RUN FINISHED; Segmentation fault: 11; real time: 2s; user: 0ms; system: 0ms
請注意,對於大多數用途,您應該考慮以下劃線開頭的名稱作爲保留供實施使用。你會經常驚訝地擺脫它,但不會永遠。如果你不擺脫它,它會受到傷害。 – 2015-03-03 06:09:38
@ user3337714最簡單的解決方案是在調試器中運行,看看它在哪裏崩潰。但無論如何,我認爲它甚至不會編譯 - 你的'input'有'char'類型,但'search'需要'char *','scanf'到'char'(格式爲'%s')幾乎是當然不正確。你應該編譯開啓警告的代碼(至少'-Wall'代表gcc/clang)。 – keltar 2015-03-03 06:19:06
@JonathanLeffler:以* double *下劃線或下劃線後跟大寫字母開頭的標識符被保留用於實現。單個下劃線和小寫字母都可以。 – 2015-03-03 06:21:26