#define fileSize 100000
int main(int argc, char *argv[]){
        char *name=argv[1];
        char ret[fileSize];
        FILE *fl = fopen(name, "rb");
        fseek(fl, 0, SEEK_END);
        long len = fileSize;
        fseek(fl, 0, SEEK_SET);
        //fread(ret, 1, len, fl);
        int i;
        *(ret+fileSize) = '\0';
        for (i=0; i<fileSize; i++){
            *(ret+i)=fgetc(fl);
            printf("byte : %s \n", ret);
        }
        fclose(fl);
}

在上面的代码中,当我输入jpeg文件的名称时,它会将第4个字符后面的任何内容读取为“……有什么想法吗?谢谢!

最佳答案

这是因为%s试图打印出一个字符串。它通过查找空字符(字节值为0)来检测字符串的结尾。所以,它可能根本不输出空格,而是不输出任何内容或空字符串,因为它遇到一个值为0的字节。

关于c - 为什么此代码读取第四个字符后的所有内容为“”?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2589532/

10-13 04:27