gpt4 book ai didi

使用 VC++ Express 在 C 中创建文本文件

转载 作者:太空宇宙 更新时间:2023-11-04 01:09:53 24 4
gpt4 key购买 nike

好吧,这是一个奇怪的问题,但我不知道为什么这不起作用...

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

#define MAX_NAME 15
#define MAX_SUBSEC 3
#define N 128

struct student{

int term;
int id;
char lastname[MAX_NAME];
char firstname[MAX_NAME];
char subjectnam[MAX_SUBSEC];
int subject;
int catalog;
char section[MAX_SUBSEC];

}students[10];

int main(){

int i;
char poop[10];
char fname[128];

printf("Enter the name of the text file: ");
scanf("%123s",fname);

strcat(fname,".txt");

FILE *inputf;
inputf = fopen(fname,"w");

if (inputf == NULL){

printf("I couldn't open results.dat for writing.\n");
exit(0);

}

printf("Enter first name: "); scanf("%s", poop);

fprintf(inputf, "%s\n", poop);

for (i=0; i<=10; ++i)
fprintf(inputf, "%d, %d\n", i, i*i);

fclose(inputf);

return 0;

}

现在这段代码的结尾就是我练习创建文件和写入文件以及所有其他好东西。当我编写代码并使用 NetBeans 在我的 Mac 上运行它时,它运行良好,顺便说一句,我是在 C 中而不是 C++ 中完成这一切。现在我想在我的桌面上这样做,Visual 不会有它,除了打开 cmd 窗口什么都不做,在第一行它说输入文件名的地方输入,我输入并按回车键,程序关闭并终止。我已经添加了源文件项并使用正确的 *.c 扩展名对其进行命名,并且我之前已经在此 IDE 中编写了 *.c 但直到现在都不必创建文件,我可以保证这就是问题所在。有人知道为什么会发生这一切吗?

编辑:我分解了一些代码来尝试找出问题所在,似乎这些行是原因...

FILE *inputf;
inputf = fopen(fname,"w");

当我尝试构建和运行时,我收到了一些典型的 VC 错误消息,并且在我的输出中显示了这些“轻率行为”

“错误 C2275:‘FILE’:非法使用此类型作为表达式”“错误 C2065:‘inputf’:未声明的标识符”“警告 C4047:‘=’:‘int’与‘FILE *’的间接级别不同”

那么,为什么这些行在我的 Mac 上的 NetBeans 上工作得很好,但在 Windows 上却不行?我想是某种可移植性问题?

最佳答案

这是因为 CL.exe(Microsoft 编译器)不允许在代码中声明变量。它要求您在函数或 block 的开头定义变量。

遗憾的是,尽管它是 C99 标准,但即使是 MSVC++ 2010 的 CL.exe 也不支持它!

将您的代码更改为:

int main(){
int i;
char poop[10];
char fname[128];
FILE *inputf;
printf("Enter the name of the text file: ");
scanf("%123s",fname);
strcat(fname,".txt");
inputf = fopen(fname,"w");
if (inputf == NULL){

printf("I couldn't open results.dat for writing.\n");
exit(0);

}

printf("Enter first name: "); scanf("%s", poop);

fprintf(inputf, "%s\n", poop);

for (i=0; i<=10; ++i)
fprintf(inputf, "%d, %d\n", i, i*i);

fclose(inputf);

return 0;

}

关于使用 VC++ Express 在 C 中创建文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15127417/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com