/* 處理不確定一行有多少個引數的指令 處理數字 輸入: 2 3 44 輸出: 2|3|44| 處理字元 輸入: a b s f 輸出: a|b|s|f| 處理字串(這種可能不太安全,以後有機會看看能不能最佳化) 輸入: asdf fgs ges 輸出: asdf|fgs|ges| 處理:不斷獲取stdin的輸入,直到遇到ctrl+c */ #include <stdio.h> #include <stdlib.h> #include <string.h> int main() { char input1[32] = {0}; char input2[32] = {0}; char input3[128] = {0}; char input4[32] = {0}; // 處理數字 fgets(input1, 32, stdin); int num[32] = {0}; int sum1 = 0; char* token1 = strtok(input1, " "); while (token1 != NULL) { num[sum1++] = atoi(token1); token1 = strtok(NULL, " "); } for (int i = 0; i < sum1; i++) { printf("%d!", num[i]); } printf("\n"); // 處理字元 fgets(input2, 32, stdin); char ch[32] = {0}; int sum2 = 0; char* token2 = strtok(input2, " "); while (NULL != token2) { ch[sum2++] = token2[0]; token2 = strtok(NULL, " "); } for (int i = 0; i < sum2; i++) { printf("%c!", ch[i]); } printf("\n"); // 處理字串(這種可能不太安全,以後有機會看看能不能最佳化) fgets(input3, 128, stdin); char *str[32] = {0}; int sum3 = 0; char* token3 = strtok(input3, " \n"); // 處理字串時,strtok的delim需要帶\n while (NULL != token3) { str[sum3++] = token3; token3 = strtok(NULL, " \n"); } for (int i = 0; i < sum3; i++) { printf("%s!", str[i]); } printf("\n"); // 不斷獲取stdin的輸入,直到遇到ctrl+c while (fgets(input4, 32, stdin)) { // 方式一: if (0 == strlen(input4)) { break; } // 方式二: /* if (0 == strcmp("\0", input4)) { break; } */ } return 0; }