首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

利用指针数组作形参 返回函数值的有关问题?为什么在函数体外总是无法得到该数组存储的值

2012-02-10 
利用指针数组作形参 返回函数值的问题?为什么在函数体外总是无法得到该数组存储的值该程序的目的是提取函

利用指针数组作形参 返回函数值的问题?为什么在函数体外总是无法得到该数组存储的值
该程序的目的是提取函数形参中   *charLine   的值
void   readLine1(FILE*   filePointer,int   lineNumber,char*   charLine[])
  {
int   endStringFlag=0;
  char   charTemp;
        int   index   =   0;
        int   i   =   getCounts(filePointer,lineNumber);
        int   countOfItemsReaded   =   0;     //读取指定的行中,已经读取了的字符串的个数,开始当然设置为0,表示还没有读取
        char   strings[i][65535];
        char*   charLine[i];
        jumpToLine(filePointer,lineNumber);
        while((charTemp   =   fgetc(filePointer))   !=   EOF)
        {      
          if(charTemp   ==   '\n ')
                                                {
                                                                //?毗办肖?乖射极脸困布办肌?艰弄lineNumberOfCurrent妥极岂m粛
                                                                if(endStringFlag   ==   1)
                                                                {
                                                                                charLine[countOfItemsReaded]=strings[countOfItemsReaded];
                                                                                break;
                                                                }
                                                                continue;
                                                }
                                                                //碰到分隔符的处理,将已经读取的字符串赋给指针,另外,设置其它的参数
                                                                if(charTemp   ==   ', ')


                                                                {
                                                                                charLine[countOfItemsReaded]   =   strings[countOfItemsReaded];
                                                                                countOfItemsReaded++;
                                                                                index=0;
                                                                                endStringFlag=1;
                                                                                continue;
                                                                }
                                                                //如果还没有满足预期的数据个数,组装这个字符串
                                                                if(countOfItemsReaded   <=   i)
                                                                {
                                                                                strings[countOfItemsReaded][index]   =   charTemp;
                                                                                index++;
                                                                                continue;


                                                                }
        }
        int   x   =   0;
        for(x;x <i;x++)
        {
printf( "charLine[%d]=%s\n ",x,charLine[x]);
        }
  }

[解决办法]
char strings[i][65535];
char* charLine[i];
=======================
数组维数需编译期的常量
这个i,常数
那才行,呵呵^_^,okokok
;;;;;;;;;;;;
c99可以定义变长数组了
void readLine1(FILE* filePointer,int lineNumber,char* charLine[])
char* charLine[i];//重定义了

热点排行