gpt4 book ai didi

c - 使用 Sublime Text 和 Xcode 在 Mac 上进行文件输入/输出。 C语言

转载 作者:行者123 更新时间:2023-11-30 15:35:27 25 4
gpt4 key购买 nike

所以我的第一个问题是,如何使用 Xcode 和终端在 Mac 上编写文件输入/输出程序?

第二,在我弄清楚这一点之前,有人介意告诉我这是否正确,因为我目前无法编译和运行它?这周我将对我的驱动器进行分区并在其上安装窗口,但在那之前我想为考试而学习。

这是练习题:编写一个程序,从第一行读入一个整数 n,然后在接下来的 n 行中每行读入两个内容(一个 int SSN 和一个 float 工资)。所有这些都形成一个文件。您必须提示输入文件名作为字符串,且长度肯定小于 30 个字符。打开文件等,读取所有内容,并保留所有工资的运行总计,然后当读取完成时,提示输入输出文件名字符串,打开它并向其中写入所有收入的平均值。

这是我的代码:

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

FILE *F1, *F2;

void main () {

int SSN, n, i;
float wages, total;
char f1name, f2name;

scanf("%s", &f1name);
F1 = fopen("f1name", "r");

fscanf(F1,"%d", &n);
{

// Reading in the
for(i=0; i<n; i++)
{
fscanf(F1,"%d%f", &SSN, &wages);
total += wages;
}

// Scanning in file name and opening it
scanf("%s", &f2name);
F2 = fopen(fname, "w");

// Writing to the file the average of all earnings
fprintf(F2,"%d%f", SSN, total/n);
}

// Closing the file
fclose(F1);
fclose(F2);

}

最佳答案

f1namef2name 应该是存储文件名的字符数组。您已将它们定义为字符,并尝试在其中存储字符串会调用未定义的行为,因为 scanf 会进行非法内存访问。

此外,main 函数的签名应该是以下之一。

int main(void);
int main(int argc, char *argv[]);

你应该修改你的程序

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

int main(void) {
// variable name SSN change to lowercase
int ssn, n, i;
int retval; // to save the return value of fscanf
float wages, total;
char f1name[30+1], f2name[30+1];

// define file pointers inside main
// also change the name to lowercase
FILE *f1, *f2;

scanf("%30s", f1name);
f1 = fopen(f1name, "r");

// check for error in opening file
if(f1 == NULL) {
// print error message to stderr
perror("error in opening file\n");
// handle it
}

retval = fscanf(f1, "%d", &n);
if(retval != 1) {
perror("error in reading from the file\n");
// handle it
}

for(i = 0; i < n; i++) {
retval = fscanf(f1,"%d%f", &ssn, &wages);
if(retval != 2) {
perror("error in reading from the file\n");
// handle it
}
total += wages;
}

scanf("%30s", f2name);
f2 = fopen(f2name, "w");

// check for error in opening file
if(f2 == NULL) {
// print error message to stderr
perror("error in opening file\n");
// handle it
}

// Writing to the file the average of all earnings
fprintf(f2,"%d %f", ssn, total / n);

// Closing the file
fclose(f1);
fclose(f2);
return 0;
}

关于c - 使用 Sublime Text 和 Xcode 在 Mac 上进行文件输入/输出。 C语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22903577/

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