字符数组指针的问题
比如程序中有如下定义
char *szBuf[10]
用来存放10个国家名字
那么怎样在程序中向这个指针数组中存放各个国家的名字呢?
我用gets()不是报错就是非法访问地址。
还有,main(int argc,char *argv[])和main(int argc,char **argv)是等效的
这是为什么?最好列举一下两个数组的地址。
谢谢!
[解决办法]
#include <iostream>using namespace std;#define N 2int main(){ int i; char* country[N]; for (i = 0 ; i < N; i++) { country[i] = new char[20]; } i = 0; while (i < N) { cin >> country[i++]; } i = 0; while (i < N) { cout << country[i++] << endl; } for (i = 0 ; i < N; i++) { delete [] country[i]; } return 0;}
[解决办法]
#include <stdio.h>#include <stdlib.h>int main(int argc, char *argv[]){ char *szBuf[10]; char *str; int i; for ( i = 0; i < 10; i++ ) { str = (char *)malloc(sizeof(char)*20);//要有空间来存放才行 gets(str); //接收 szBuf[i] = str; //把指针放到指针数组szBuf中 } for ( i = 0; i < 10; i++ ) { printf("%s ",szBuf[i]);//读取指针,输出 free(szBuf[i]); //释放 } system("PAUSE"); return 0;}