- UID
- 92572
- 帖子
- 745
- 主題
- 89
- 精華
- 0
- 積分
- 283
- 楓幣
- 1123
- 威望
- 225
- 存款
- 0
- 贊助金額
- 150
- 推廣
- 0
- GP
- 141
- 閱讀權限
- 30
- 在線時間
- 411 小時
- 註冊時間
- 2015-2-18
- 最後登入
- 2024-11-17
|
呂晨 發表於 2021-9-23 10:14
我是用visual studio來跑,會跑出這些錯誤
還是visual studio 寫C 有其它寫法?
抱歉我寫成C++的語法了
以下是C的- #include<stdio.h>
- #include<stdlib.h>
- #include<string.h>
- #pragma warning( disable : 4996 )
- #define N 13
- struct test
- {
- char* name;
- int x;
- };
- void print(struct test _t) { printf("%s %d\n", _t.name, _t.x); }
- int binarySearch(struct test* matrix, int l, int r, int x)
- {
- if (r >= l) {
- int mid = l + (r - l) / 2;
- if (matrix[mid].x == x)
- return mid;
- if (matrix[mid].x > x)
- return binarySearch(matrix, l, mid - 1, x);
- return binarySearch(matrix, mid + 1, r, x);
- }
- return -1;
- }
- void bubbleSort(struct test* matrix, int line) {
- struct test temp;
- int i, j;
- for (i = 1; i < line; i++) {
- for (j = 0; j < line - i; j++) {
- if (matrix[j].x > matrix[j + 1].x) {
- temp = matrix[j];
- matrix[j] = matrix[j + 1];
- matrix[j + 1] = temp;
- }
- }
- }
- }
- int main()
- {
- int i, j = 1, line = 0, tmp;
- char name[N];
- char value[N];
- printf("enter the file name:(.txt)");
- scanf("%s", &name);
- FILE* fp = fopen(name, "r");
- if (fp == NULL)
- {
- puts("error");
- }
- while ((i = fgetc(fp)) != EOF)
- {
- if (i == '\n') line++;
- }
- fseek(fp, 0L, SEEK_SET);
- struct test* matrix = (struct test*)malloc(line * sizeof(struct test));
- i = 0; // 記錄第幾筆資料
- while (fgets(value, sizeof(value), fp) != NULL)
- {
- char* token = strtok(value, " "); // 取得指向 A? 的指標
- matrix[i].name = (char*)malloc(sizeof(char) * N);
- strcpy(matrix[i].name, token); // 賦值
- token = strtok(NULL, "\n"); // 取得指向 數值 的指標
- tmp = atoi(token); // 字串轉數字
- matrix[i].x = tmp;
- print(matrix[i]); // 印出結構
- i++;
- }
- // Bubble Sort
- bubbleSort(matrix, line);
- // Binary Search
- int toFind;
- for (i = 0; i < line; i++)
- {
- toFind = binarySearch(matrix, 0, line, matrix[i].x);
- printf("你要找的東西: ");
- print(matrix[toFind]);
- }
- free(matrix); // 釋放資源(指標類的東西必須要手動釋放!)
- }
複製代碼 |
|