簡體   English   中英

C獲取單詞文本文件中的行數

[英]C getting number of lines in a text file of words

所以我試圖在一個新行的每個文本文件中獲取行數。 到目前為止我有這種方法......

char * getS(char *fileName){
    FILE *src;
    if((src = fopen(fileName, "r")) == NULL){
        printf("%s %s %s", "Cannot open file ", fileName, ". The program is now ending.");
        exit(-1);
    }
    char *get = ".";        

    int c = 0;
    char ch = 'x';
    while(ch!=EOF) {
        ch = fgetc(src);
        if(ch == '\n')  c++;
    }
    fseek(src, 0, SEEK_SET);
    printf("%i",c);
    int random = rand() % (c - 1);
    return get;
}

出於某種原因,如果我在中間放置一個printf for ch,它將給出正確的行數,否則為7801729。

另外我如何從0到行數進行隨機int? 在C中使用隨機的概念現在讓我感到困惑。

提前致謝!

我認為fgetc()返回一個int但是你將返回的值填充到一個char中(沒有將它轉換為char)所以你得到了返回的int的第一個字節在正確的位置(在你的ch變量中)但是額外的三個字節溢出到您的c變量中,該變量與堆棧上的ch相鄰。 當你遞增c時,它會增加第一個字節(這意味着你在一個大端機器上),但你的int中額外的三個字節是不受影響的,並且由於getc()返回的覆蓋而被破壞。 這就是你的答案中的第一個字節看起來正確的原因。 嘗試將ch定義為int,我打賭你的問題會消失(盡管你可能需要添加一些轉換來避免編譯器錯誤/警告)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM