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

我现在要生成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。不知道要怎样赋值才行?先谢谢了

你这个程序错误太多,没崩溃算是运气好
首先: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函数将数据考入到空间中,最后在释放这些分配的空间

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-09-24
请参考下面程序:
#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]; 那我的问题应该可以解决。我明天来试。谢了

本回答被提问者和网友采纳
第2个回答  2013-05-14
#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;
}

第3个回答  推荐于2017-09-10
1、首先确定是字符指针数组还是字符数组指针,前者是一个数组,数组每个元素都是一个字符指针,后者是一个指向字符数组的指针。
2、若是指向字符数组的指针,则很简单,使用scanf("%s", str);函数获取输入的字符串,然后使用字符串拷贝函数strcpy(stc, dest);将获取的字符串拷贝到指定地址的字符指针数组中,拷贝过程中注意检查访问数组是否越界,若越界,则需要在字符数组的最后一个元素赋值为结束符'\0'。
3、若是赋值 字符指针数组,那么就是对数组中的某一个元素指向的字符数组进行拷贝赋值,其过程与前者相同。
相似回答