ftell возвращает -1 и сбой программы

Может ли кто-нибудь сказать мне, что я делаю неправильно здесь с ftell?

Я просто возился с C и обнаружил, что следующий код отправляет мне терминальное сообщение -1, что означает ошибку в соответствии с https://publib.boulder.ibm.com/infocenter/zos/v1r13/index.jsp?topic=%2Fcom.ibm.zos.r13.bpxbd00%2Fftell.htm и приводит к сбою программы.

Что я делаю неправильно? Это как-то связано с указателями?

Спасибо

#include <stdio.h>
#include <string.h>

int main()
{
    FILE * f;
    char * s = "Hey Buddy!";
    f = fopen("myFile.txt", "w");

    int count = strlen(s);

    for (int i = 0; i < count; i++)
    {
        printf("%d\n", ftell(i));
        fputc(s[i], f);
    }

    fclose(f);
    return 0;
}

Предполагается, что программа перебирает «s» (печатая ее по одной букве за раз до f), а также печатает в терминале, как далеко по массиву она прошла. 0 = H, 1 = e, 2 = y и т. д.


person Ollie    schedule 01.07.2013    source источник


Ответы (1)


Вам нужно передать f в качестве аргумента для ftell, а не i, так как ftell ожидает указатель на объект FILE.

person Drew McGowen    schedule 01.07.2013
comment
+1. Также было бы хорошо проверить, что fopen вернул ненулевой дескриптор файла. - person simonc; 01.07.2013
comment
Я знал, что это будет что-то глупое. Большое спасибо :) @simonc Это только я болтаю о своих устройствах, так что это не будет иметь большого значения, но, тем не менее, спасибо за внимание :) - person Ollie; 01.07.2013