簡體   English   中英

使用 char 指針作為輸入制作 myfgets

[英]Making myfgets using char pointer as an input

char *myfgets(char *s, int n, FILE *in) {
    char ch;
    if (n<=0) {
        return s;
    }
    while (((ch = getc(in)) != '\n')) {
        if(ch == EOF){
            return NULL;
        }
        else if (ch == '\n') {
            break;
        } else {
            *s=ch;
            s++;
        }
    }
    *s = '\n';
    if (ferror(in) != 0) {
        return NULL;
    } else {
        return s;
    }   
    
    if (strlen(s) > 512) {
        return NULL;
    }
}

我只想從某個特定文件中取出 1 行並將該行放入字符指針 ( *s ) 中。 我做了這個 function 但是當我運行這個程序時它並沒有很好地工作。 結果,顯示了很多未知字符。

我的代碼有什么問題嗎?

strlen()的手冊頁:

strlen() function 計算s指向的字符串的長度,不包括終止字節 null ( '\0' )。

因此, strlen計算字符數,直到找到 null 字節'\0' ,而不是換行符'\n' 考慮改變

*s = '\n'

*s = '\0'

或者,您可以編寫自己的strlen來查找'\n'而不是'\0'

暫無
暫無

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

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