CSDN-CSDN社区-C/C++-C语言

收藏 字符数组指针的问题[问题点数:20,结帖人:XSign]

  • XSign
  • 等 级:
  • 结帖率:
楼主发表于:2008-03-13 17:30:34
比如程序中有如下定义
char *szBuf[10]
用来存放10个国家名字

那么怎样在程序中向这个指针数组中存放各个国家的名字呢?
我用gets()不是报错就是非法访问地址。

还有,main(int argc,char *argv[])和main(int argc,char **argv)是等效的
这是为什么?最好列举一下两个数组的地址。

谢谢!
回复次数:9
#1楼 得分:0回复于:2008-03-13 17:33:16
你需要一个二维数组
char buf[10][128];
  • baihacker用户头像
  • baihacker
  • (飞雪-水群:29818877)
  • 等 级:
  • 4

#2楼 得分:0回复于:2008-03-13 17:34:20
C/C++ code
#include <stdio.h> #define MAX_LEN 20 int main() { char szBuf[10][MAX_LEN] ; int i; for (i = 0; i < 3; ++i) { gets(szBuf[i]); } for (i = 0; i < 3; ++i) { puts(szBuf[i]); } return 0; }
  • fetag用户头像
  • fetag
  • (孤独过儿)
  • 等 级:
#3楼 得分:10回复于:2008-03-13 17:36:44
C/C++ code
#include <iostream> using namespace std; #define N 2 int 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; }
#4楼 得分:0回复于:2008-03-13 17:42:38
恩,二维数组我会用。

这样想:
如果,char *szBuf[10]
那么szBuf[0]存放第一个字符串的地址*szBuf[0]不就是第一个字符串吗?
那么gets(char *)不就因该是gets(szBuf)马?
第二个字符串不就是gets(szBuf+1)或者gets(szBuf[1])?
#5楼 得分:0回复于:2008-03-13 17:45:33
二维数组我会用

我就是想弄明白
char *szBuf[10]

那么szBuf[0]不就是第一个字符串的地址,*szBuf[0]不就是第一个字符串吗?

难道是没有分配的原因?需要new()?
#6楼 得分:10回复于:2008-03-13 17:46:43
C/C++ code
#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; }
#7楼 得分:0回复于:2008-03-13 17:47:26
C/C++ code
#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; }
#8楼 得分:0回复于:2008-03-13 17:47:48
to 二楼:
二维数组我会用

我就是想弄明白
char *szBuf[10]

那么szBuf[0]不就是第一个字符串的地址,*szBuf[0]不就是第一个字符串吗?

难道是没有分配的原因?需要new()?
to 三楼:
就是需要分配一个内存地址给指针,对吗?
#9楼 得分:0回复于:2008-03-14 17:30:35
对啊, char *szBuf[10] ,这个只是十个指针,什么也没有
相关问题
请问字符指针和字符数组有什么区别? 硬件/嵌入开发/ 嵌入开发(WinCE ...
字符数组-〉指针? VC/MFC / 基础类- CSDN社区community.csdn.net
在用指针访问字符数组时出现访问冲突,请问有哪些可能?怎样解决?请 ...
关于字符指针与字符数组!!!!! C/C++ / C语言- CSDN社区community.csdn.net
C字符指针数组使用的疑惑C/C++ / 新手乐园- CSDN社区community.csdn.net
有没有人知道怎么把一个字符数组的指针传给一个引用?快帮帮我吧!想了 ...