C語言中scanf與指針數(shù)組的使用技巧

小樊
82
2024-09-10 10:23:13
欄目: 編程語言

在C語言中,scanf函數(shù)用于從標(biāo)準(zhǔn)輸入(通常是鍵盤)讀取數(shù)據(jù)

  1. 使用指針數(shù)組存儲(chǔ)字符串:
#include<stdio.h>

int main() {
    char *names[3]; // 定義一個(gè)指針數(shù)組,用于存儲(chǔ)字符串
    for (int i = 0; i < 3; i++) {
        names[i] = malloc(100); // 為每個(gè)指針分配內(nèi)存空間
        printf("請(qǐng)輸入第%d個(gè)名字:", i + 1);
        scanf("%s", names[i]); // 使用scanf讀取字符串
    }

    // 打印輸入的名字
    for (int i = 0; i < 3; i++) {
        printf("第%d個(gè)名字是:%s\n", i + 1, names[i]);
    }

    // 釋放內(nèi)存
    for (int i = 0; i < 3; i++) {
        free(names[i]);
    }

    return 0;
}
  1. 使用指針數(shù)組存儲(chǔ)整數(shù):
#include<stdio.h>

int main() {
    int n, *numbers;
    printf("請(qǐng)輸入整數(shù)的個(gè)數(shù):");
    scanf("%d", &n);

    numbers = (int *)malloc(n * sizeof(int)); // 為整數(shù)分配內(nèi)存空間

    for (int i = 0; i < n; i++) {
        printf("請(qǐng)輸入第%d個(gè)整數(shù):", i + 1);
        scanf("%d", &numbers[i]); // 使用scanf讀取整數(shù)
    }

    // 打印輸入的整數(shù)
    for (int i = 0; i < n; i++) {
        printf("第%d個(gè)整數(shù)是:%d\n", i + 1, numbers[i]);
    }

    // 釋放內(nèi)存
    free(numbers);

    return 0;
}
  1. 使用指針數(shù)組存儲(chǔ)浮點(diǎn)數(shù):
#include<stdio.h>

int main() {
    float *scores;
    int n;
    printf("請(qǐng)輸入成績(jī)的個(gè)數(shù):");
    scanf("%d", &n);

    scores = (float *)malloc(n * sizeof(float)); // 為浮點(diǎn)數(shù)分配內(nèi)存空間

    for (int i = 0; i < n; i++) {
        printf("請(qǐng)輸入第%d個(gè)成績(jī):", i + 1);
        scanf("%f", &scores[i]); // 使用scanf讀取浮點(diǎn)數(shù)
    }

    // 打印輸入的成績(jī)
    for (int i = 0; i < n; i++) {
        printf("第%d個(gè)成績(jī)是:%.2f\n", i + 1, scores[i]);
    }

    // 釋放內(nèi)存
    free(scores);

    return 0;
}

注意:在使用scanf讀取字符串時(shí),需要確保輸入的字符串長(zhǎng)度不超過分配的內(nèi)存空間。在實(shí)際編程中,為了避免緩沖區(qū)溢出,可以使用fgets函數(shù)代替scanf讀取字符串。

0