linux sscanf 處理多行文本的方法

小樊
89
2024-08-26 22:40:18

在 Linux 中,sscanf 函數(shù)用于從字符串中讀取格式化的輸入

  1. 使用 strtokstrsep 分割字符串。
  2. 對(duì)每一行使用 sscanf 進(jìn)行解析。

以下是一個(gè)簡單的示例,展示了如何使用 sscanf 處理多行文本:

#include<stdio.h>
#include<string.h>

int main() {
    char text[] = "1 2 3\n4 5 6\n7 8 9";
    char *line = strtok(text, "\n");

    while (line != NULL) {
        int a, b, c;
        int result = sscanf(line, "%d %d %d", &a, &b, &c);

        if (result == 3) {
            printf("Line: %s -> a: %d, b: %d, c: %d\n", line, a, b, c);
        } else {
            printf("Error parsing line: %s\n", line);
        }

        line = strtok(NULL, "\n");
    }

    return 0;
}

這個(gè)示例中,我們首先使用 strtok 函數(shù)將字符串 text 按換行符 \n 分割成多行。然后,我們遍歷每一行,并使用 sscanf 函數(shù)從每一行中讀取三個(gè)整數(shù)。如果 sscanf 成功讀取了三個(gè)整數(shù),我們將輸出這些整數(shù)的值。否則,我們將輸出一個(gè)錯(cuò)誤消息。

0