有个关于二维数组的问题,请各位大神帮忙
本帖最后由 changtai_0 于 2013-04-03 09:56:36 编辑
//设计要求有个字符串数组存储termid,每个id固定20位;二维数组 指针 字符串
#define TERMID_LEN20//termid的字节数
typedef char TERMSTATUS[TERMID_LEN+1];
//用 TERMSTATUS* 表示 二维字符串数组;
//有两个函数关联到
int func1(int termcount,TERMSTATUS* terminal_id,int seqid){
……
TERMSTATUS* termids;
(TERMSTATUS*)malloc(termcount*sizeof(TERMSTATUS))
formatalstr(terminal_id[0],TERMID_LEN,termids[0])
}
int formatalstr(char* value,int len,char* in){
sprintf(in,"%-*s",len,value); //这个地方传进来value=null
in[len]='\0';
return 0;
}
//使用过程
TERMSTATUS terminal_id[2]={"12345","67890"};
//在这个位置用formatalstr(terminal_id[0],TERMID_LEN,terminal_id[0])是成功的
func1(2,terminal_id,1);
/*小弟初次用c语言,数组指针概念还很模糊,请个位大神帮忙
谢谢大家,急用啊!!!!!!!!
*/
[解决办法]
看上去好像笔试题哦。
[解决办法]
func1发完整看看?
TERMSTATUS* termids;
(TERMSTATUS*)malloc(termcount*sizeof(TERMSTATUS))
这两句不对吧,下面一句没分号而且分配的内存没有赋给任何变量,是不是这样?
TERMSTATUS* termids = (TERMSTATUS*)malloc(termcount*sizeof(TERMSTATUS));
[解决办法]
个人感觉并非是多了一层的原因,因为外面传入的是数组,而func1里传入的是指针,可能是寻址错误。
供参考。
[解决办法]
int formatalstr(char* value,int len,char* in);的前置声明类型是否匹配?
[解决办法]
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//设计要求有个字符串数组存储termid,每个id固定20位;
#define TERMID_LEN20//termid的字节数
typedef char TERMSTATUS[TERMID_LEN+1];
//用 TERMSTATUS* 表示 二维字符串数组;
//有两个函数关联到
int formatalstr(char* value,int len,char* in)
{
//用sprintf可以,但用strncpy更好。
strncpy(in,value, len);
in[len] = 0;
return 0;
}
int func1(int termcount,TERMSTATUS* terminal_id,int seqid){
TERMSTATUS* termids= (TERMSTATUS*)malloc(termcount*sizeof(TERMSTATUS));
for(int i = 0; i < termcount; ++i)
{
formatalstr(terminal_id[i],TERMID_LEN,termids[i]);
}
free(termids);
return 0;
}
int main()
{
//使用过程
TERMSTATUS terminal_id[2]={"12345","67890"};
//在这个位置用formatalstr(terminal_id[0],TERMID_LEN,terminal_id[0])是成功的
func1(2,terminal_id,1);
}
[解决办法]
terminal_id[0]是一个数组,你应该传&terminal_id[0],
楼主能把TERMSTATUS定义发出来看下吗
[解决办法]
func1接收的就是一个字符串
TERMSTATUS定义一开始就有
[解决办法]
楼主看10楼。。。。
[解决办法]
请你贴上完整代码或者自己调试一下,不能从代码中看出value为0的事情。
[解决办法]
这个写个test不就好了,VC6.0 运行没有发现你说的NULL的问题。
下面是测试代码
#include <stdio.h>
#include <stdlib.h>
//设计要求有个字符串数组存储termid,每个id固定20位;
#define TERMID_LEN20//termid的字节数
typedef char TERMSTATUS[TERMID_LEN+1];
//用 TERMSTATUS* 表示 二维字符串数组;
int formatalstr(char* value,int len,char* in){
sprintf(in,"%-*s",len,value); //这个地方传进来value=null
in[len]='\0';
return 0;
}
//有两个函数关联到
int func1(int termcount,TERMSTATUS* terminal_id,int seqid){
TERMSTATUS* termids = (TERMSTATUS*)malloc(termcount*sizeof(TERMSTATUS));
return formatalstr(terminal_id[0],TERMID_LEN,termids[0]);
}
int main() {
//使用过程
TERMSTATUS terminal_id[2]={"12345","67890"};
//在这个位置用formatalstr(terminal_id[0],TERMID_LEN,terminal_id[0])是成功的
func1(2,terminal_id,1);
return 0;
}