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