1 頁 (共 1 頁)

若有100函式,隨機存取名稱組合方式

發表於 : 2024年 12月 26日, 13:29
cajhbb
若有100字串組合,隨機存取

代碼: 選擇全部

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main() {
    char baseStr[] = "stu";
    char sting[10]; // 定義一個字符陣列來存儲新字串
    int randomNum;

    // 初始化隨機數生成器
    srand(time(0));

    // 生成1到100之間的隨機數
    randomNum = rand() % 100 + 1;

    // 組合新字串並存儲在sting變數中
    sprintf(sting, "%s%d", baseStr, randomNum);

    // 打印新字串
    printf("New string: %s\n", sting);

    return 0;
}


若有100函式,隨機存取名稱組合方式(無法用動態組合)

發表於 : 2024年 12月 26日, 13:46
cajhbb
在 C 語言中,函式名稱不能以字串動態調用,因為函式調用必須在編譯時靜態決定。然而,你可以使用函式指標來實現類似的功能。以下是一個範例程式碼,展示如何通過隨機數生成字串,並使用函式指標來動態調用對應的函式:

代碼: 選擇全部

#include <Arduino.h>

// 定義 100 個函式
void s1() { Serial.println("Function s1 is called"); }
void s2() { Serial.println("Function s2 is called"); }
//...
void s99() { Serial.println("Function s99 is called"); }
void s100() { Serial.println("Function s100 is called"); }

// 用函式指標陣列儲存 100 個函式
typedef void (*FunctionPointer)();
FunctionPointer functions[100] = {s1, s2, /*...*/ s99, s100};

void setup() {
  Serial.begin(9600); // 初始化序列通訊
  randomSeed(analogRead(0)); // 以模擬輸入 0 的讀數作為隨機種子
}

void loop() {
  // 產生隨機數,範圍為 0 到 99
  int randomIndex = random(100);

  // 呼叫對應的函式
  functions[randomIndex]();

  delay(1000); // 延遲 1 秒,避免過於頻繁地呼叫函式
}