关于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。不知道要怎样赋值才行?先谢谢了 展开
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。不知道要怎样赋值才行?先谢谢了 展开
4个回答
展开全部
你这个程序错误太多,没崩溃算是运气好
首先: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的原因
这个程序需要修改的地方多着,看看指针及字符串操作方面的资料吧!
首先: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函数将数据考入到空间中,最后在释放这些分配的空间
展开全部
请参考下面程序:
#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]);
}
}
#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]; 那我的问题应该可以解决。我明天来试。谢了
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#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;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1、首先确定是字符指针数组还是字符数组指针,前者是一个数组,数组每个元素都是一个字符指针,后者是一个指向字符数组的指针。
2、若是指向字符数组的指针,则很简单,使用scanf("%s", str);函数获取输入的字符串,然后使用字符串拷贝函数strcpy(stc, dest);将获取的字符串拷贝到指定地址的字符指针数组中,拷贝过程中注意检查访问数组是否越界,若越界,则需要在字符数组的最后一个元素赋值为结束符'\0'。
3、若是赋值 字符指针数组,那么就是对数组中的某一个元素指向的字符数组进行拷贝赋值,其过程与前者相同。
2、若是指向字符数组的指针,则很简单,使用scanf("%s", str);函数获取输入的字符串,然后使用字符串拷贝函数strcpy(stc, dest);将获取的字符串拷贝到指定地址的字符指针数组中,拷贝过程中注意检查访问数组是否越界,若越界,则需要在字符数组的最后一个元素赋值为结束符'\0'。
3、若是赋值 字符指针数组,那么就是对数组中的某一个元素指向的字符数组进行拷贝赋值,其过程与前者相同。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询