Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法使用C中的指针创建文件?_C - Fatal编程技术网

无法使用C中的指针创建文件?

无法使用C中的指针创建文件?,c,C,我创建了一个程序,它创建一个文本文件,要求用户输入任何数据,然后保存数据,然后将相同的内容复制到另一个文件中,但使用大写字母。但每当我在Netbeans中启动它时,它就会在毫秒内停止,而不做任何事情。这是我的完整代码: int main() { FILE *f; FILE *g; char c, d; f = fopen("/Users/Mansoor/Desktop/GRIMM2.txt", "r"); if (!f) { printf("File Couldn't be Ope

我创建了一个程序,它创建一个文本文件,要求用户输入任何数据,然后保存数据,然后将相同的内容复制到另一个文件中,但使用大写字母。但每当我在Netbeans中启动它时,它就会在毫秒内停止,而不做任何事情。这是我的完整代码:

int main() {

FILE *f;
FILE *g;
char c, d;

f = fopen("/Users/Mansoor/Desktop/GRIMM2.txt", "r");

if (!f) {
    printf("File Couldn't be Opened.");
} else {
    printf("File opened successfully.\n");
    printf("Write Anything: ");

    while ( c != EOF ) {
        c = getchar();
        putc(c, f);
    }
    printf("Wrote Successful.\n");
    fclose(f);
}
f = fopen("/Users/Mansoor/Desktop/GRIMM2.txt", "r");
g = fopen("/Users/Mansoor/Desktop/GRIMM4.txt", "w");

while ((c = fgetc(f)) != EOF) {
    d = toupper(c);
    putc(d, g);
}
printf("Converted to Upper Case and copying in new file... Successful!");

fclose(f);    
fclose(g);
}

只要将第一个“r”改为“r+”或“w”,我想当您第一次创建程序时,您已经有了“GRIMM2.txt”文件,这就是它工作的原因。

您的代码中有未定义的行为。在初始化局部变量之前,请先使用它。未初始化的局部变量有一个不确定的值,使用它们会导致未定义的行为。此外,您最初打开文件
f
进行读取和写入。有趣的是,两个while循环基本上做相同的事情(在流之间穿梭字符),但第一个循环被破坏,但是第二个看起来不错。@JoachimPileborg我不知道。当你打开
f
g
时,你永远不会检查成功与否。而
c
必须是
int
,而不是
char
fgetc
getchar
返回一个
int
。还有一个小问题是未初始化的
c