看板 C_and_CPP 關於我們 聯絡資訊
1. 我在C primer有看到一些const的用法 const int n = 1; // n這個變數的內容是不可改的 const int *ptr; //ptr這個pointer指向的位置的內容是不可改的 int *const ptr; //ptr這個pointer 是不可改的 但是我不確定 char *const argv[] 所代表的含意 我目前猜是 " argv是一個array, array的內容是char * ", argv是不可改的 不知道對不對 2. 下面這份code會有warning, 我想是因為text是"一個 array, array的內容是 int [100]" 跟應該傳進print的參數type不合, 不知道對不對 #include <stdio.h> #include <string.h> #include <stdlib.h> int stringN; void print(char *const argv[]) { int i; for(i=0; i<stringN; i++) printf("[%s]\n", argv[i]); } int main() { int i; char text[100][100]; char tmp[100]; for(i=0; scanf("%s", text[i]) != EOF && i<100; i++); 1;37mstringN = i; print(text); return 0; } 如果我已經確定input string length不會超過100 那直接宣告一個text[100][100] 應該比 一個個去malloc 最後還要free快 所以我一直在想一個方法, 讓自己可以宣告char text[100][100] 又可以把text傳進function做處理 但是一直想不到 最多只能宣告cahr *text[100]; 然後用malloc, 再將讀到的字串copy到text[i]中 希望有人可以幫忙想看看有什麼方法 p.s. 這是我在寫program時遇到的問題, print原本應該是C library中的函式 char *const argv[]是他的參數的format 為了簡化問題, 我才改寫成print 謝謝 #include <stdio.h> #include <string.h> #include <stdlib.h> int stringN; void print(char *const argv[]) { int i; for(i=0; i<stringN; i++) printf("[%s]\n", argv[i]); } int main() { int i; char *text[100]; char tmp[100]; for(i=0; scanf("%s", tmp) != EOF && i<100; i++) { text[i] = (char *)malloc(100 * sizeof(char)); strcpy(text[i], tmp); } stringN = i; print(text); return 0; } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.192.18
nowar100:我想請問真的有 C Primer 嗎 我指找到 C++ Primer 和 10/23 18:09
nowar100:C Primer Plus 都找不到 C Primer @_@" 10/23 18:09
hsnucsc:sorry, 應該是C Primer plus 10/23 18:14
nowar100:喔喔 最近想研究聖經本 一直找不到 XDD 10/23 18:24