C fscanf和指针数组
我有C fscanf和指针数组,c,C,我有charstr[5000]里面什么都没有 然后我有toCharArray(fp1,str) 程序崩溃,fscanf行上没有错误消息。我试图使用*(str++)语句遍历数组,并将文件中的值分配给每个元素。我可以去*(str++)='G'*(str++)=‘H’我的心里话(和 PrtTf(“%c”,*(-STR));将返回正确的值),但我不能使用fSCANF来做同样的事情。 您必须考虑代码中的几点。 错误检查参数 在fscanf()中,%c需要一个指向字符的指针 您说过您的数组大小是5000
charstr[5000]代码>里面什么都没有
然后我有toCharArray(fp1,str)代码>
程序崩溃,fscanf行上没有错误消息。我试图使用*(str++)
语句遍历数组,并将文件中的值分配给每个元素。我可以去*(str++)='G'*(str++)=‘H’代码>我的心里话(和<代码> PrtTf(“%c”,*(-STR));将返回正确的值),但我不能使用fSCANF来做同样的事情。 您必须考虑代码中的几点。
- 错误检查参数
- 在
fscanf()
中,%c
需要一个指向字符的指针
- 您说过您的数组大小是5000,因此
while()
循环的运行时间不应超过5000
void toCharArray(FILE *fp1, char *str) {
int i = 0;
if(fp1 == NULL || str == NULL){
printf("Invalid arguments..\n");
return;
}
while((i<5000)&&(EOF!=fscanf(fp1, "%c", &str[i]))) {
i++;
}
}
void tocharray(文件*fp1,字符*str){
int i=0;
if(fp1==NULL | | str==NULL){
printf(“无效参数..\n”);
返回;
}
while((ifscanf
with%c
需要一个指针作为参数)您的编译器应该警告您错误的fscanf参数。如果没有,请提高警告级别。如果有,请返回并阅读警告,并设置编译器,使其将警告视为错误。while(EOF!=fscanf(fp1,%c),str)){str++;}*str=0;
5000很高,但可能不够高。最好将该值作为参数传递给函数,然后最多只读取该数量的字符(减1)。尽管有所改进,但问题是:1)i
void toCharArray(FILE *fp1, char *str) {
int i = 0;
if(fp1 == NULL || str == NULL){
printf("Invalid arguments..\n");
return;
}
while((i<5000)&&(EOF!=fscanf(fp1, "%c", &str[i]))) {
i++;
}
}