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((i
    fscanf
    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++;
         }
    }