无法在Debian上的C中获得正确的文件输出

时间:2019-06-10 04:46:39

标签: c

我是Debian和C的新手。试图编写一个程序来读取test.txt文件并生成temp.txt文件,然后将其重命名为test.txt。但是,每次我运行程序时,都会得到不可读的输出。另外,该程序不会从工作目录中读取文件,因此我不得不使用完整路径。我有办法解决吗?

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

#define FILENAME "/home/deusi/Programming/Personal/C/toUpperCase/test.txt"
#define TEMPFILE "/home/deusi/Programming/Personal/C/toUpperCase/temp.txt"

int main() {

    FILE *fp = NULL;
    FILE *temp = NULL;
    char ch;
    fp = fopen(FILENAME, "r");

    if (!fp) {
        perror("File DNE");
        return -1;
    }

    temp = fopen(TEMPFILE, "w");

    if(!temp) {
        return -1;
    }

    while((ch = fgetc(fp) != EOF)) {

        if(islower(ch)) {
            ch = ch-32;
        }
        fputc(ch,temp);
    }

    fclose(fp);
    fclose(temp);

    rename(TEMPFILE, FILENAME);
    remove(TEMPFILE);

    if(!fp) {
        return -1;
    }

    while ((ch = fgetc(fp)) != EOF) {
        printf("%c", ch);
    }

    return 0;
}

无论我将什么放在测试文件中,都会得到类型

的输出

1 个答案:

答案 0 :(得分:1)

这里有几个错误,但是会弄乱您的输出的是这里:

while((ch = fgetc(fp) != EOF)) {

在这里,您将ch的值分配给fgetc(fp) != EOF。应该是

while((ch = fgetc(fp)) != EOF) {