关于C语言字符串数组和字符指针相互赋值问题

我现在要生成56个文件,文件名如RequestData0.dat,RequestData1.dat.......RequestData55.dat.同时要把这56个文件名... 我现在要生成56个文件,文件名如RequestData0.dat, RequestData1.dat.......RequestData55.dat. 同时要把这56个文件名赋给数组fileArray[56]。代码如下:

char * fileArray[56];
long file[56];

char filename[50]="C:\\RequestData";
char convertStr[50];

int i;
int fileNumber = 56; //Set numbers for generating files

// Open file with a+ mode
for(i=0;i<fileNumber;i++){

itoa(i,convertStr,10);
strcat(filename, convertStr);
strcat(filename, ".dat");

if ((file[i] = fopen(filename, "a+" )) == NULL) {

return -1;

}

fileArray[i] = filename;
//strcpy(fileArray[i],filename);
strcpy(filename, "C:\\RequestData");
}

//关闭所有的文件
for (i=0;i<fileNumber;i++){

lr_output_message("fileArray = %s",fileArray[i]);

fclose(file[i]);
}

文件倒是生成成功了,fileArray[0]--fileArray[55]的值全部是C:\RequestData。不知道要怎样赋值才行?先谢谢了
展开
 我来答
f815730575
2013-05-14
知道答主
回答量:24
采纳率:0%
帮助的人:8.1万
展开全部
你这个程序错误太多,没崩溃算是运气好
首先:char filename[50]="C:\\RequestData";这句涉及到指针强转,会将filename指向"C:\\RequestData"所在的地址,在对filename进行操作时就有可能崩溃。
其次:char * fileArray[56];是指针数组,存储了56个char *型指针,而你这样儿fileArray[i] = filename;进行赋值是指针赋值,故fileArray中的每个元素都会指向"C:\\RequestData"所在的地址,这也是fileArray[0]--fileArray[55]的值全部是C:\RequestData的原因

这个程序需要修改的地方多着,看看指针及字符串操作方面的资料吧!
追问
我知道fileArray等于一个值得原因,就是不知道怎么做。看到指针就晕,所以求助来了
追答
按照你的思路,应该给fileArray的每一项分配空间,然后在用strcpy函数将数据考入到空间中,最后在释放这些分配的空间
cdyzxy
推荐于2017-09-24 · TA获得超过2.1万个赞
知道大有可为答主
回答量:1.4万
采纳率:85%
帮助的人:3744万
展开全部
请参考下面程序:
#include<stdio.h>
#include<string.h>
void main()
{ FILE *fp;
char filename[56][21];
int i;
for ( i=0;i<56;i++ ) sprintf(filename[i],"c:\\RequestData%d.dat",i);
for ( i=0;i<56;i++ )
{ if ( fp=fopen(filename[i],"wb+") )
{ //这里进行相关文件操作
fclose(fp);
}
else printf("无法建立文件%s.\n",filename[i]);
}
}
追问
我用的loadrunner写脚本,看起来不识别FILE。如果可以这样定义字符串数组char filename[56][21]; 那我的问题应该可以解决。我明天来试。谢了
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xoaxa
2013-05-14 · TA获得超过8610个赞
知道大有可为答主
回答量:6415
采纳率:72%
帮助的人:3482万
展开全部
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main() {
char filename[] = "F:\\VC\\tmp\\RequestData";
char str1[50],str2[50];
int i,fileNumber = 56;
FILE *fin;
for(i = 0;i < fileNumber;i++) {
itoa(i,str2,10);
strcpy(str1,filename);
strcat(str1,str2);
strcat(str1,".dat");
if((fin = fopen(str1,"a+")) == NULL) return -1;
fclose(fin);
}
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tattackor
推荐于2017-09-10 · TA获得超过3.5万个赞
知道大有可为答主
回答量:5083
采纳率:94%
帮助的人:891万
展开全部
1、首先确定是字符指针数组还是字符数组指针,前者是一个数组,数组每个元素都是一个字符指针,后者是一个指向字符数组的指针。
2、若是指向字符数组的指针,则很简单,使用scanf("%s", str);函数获取输入的字符串,然后使用字符串拷贝函数strcpy(stc, dest);将获取的字符串拷贝到指定地址的字符指针数组中,拷贝过程中注意检查访问数组是否越界,若越界,则需要在字符数组的最后一个元素赋值为结束符'\0'。
3、若是赋值 字符指针数组,那么就是对数组中的某一个元素指向的字符数组进行拷贝赋值,其过程与前者相同。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式