c - 如何用C语言正确编写文件?

标签 c

我正在学习 C 语言的基本编程,但在文件写入练习方面遇到问题。问题是在文件中写入方阵,但采用以下方式: 每行前两个数字用“,”分隔,然后分别写下其余数字。

这是一个相当简单的练习,但我只是在学习,我留下了一些有缺陷的代码。我希望你能帮助我。

#include <stdio.h>
int main(){
FILE *data;
int matrix[4][4] = {
    {1,2,3,4},
    {2,3,5,6},
    {9,8,4,5},
    {5,3,1,2}
};
data = fopen("output.txt","w");
for (int i = 0; i < 4; ++i)
{
    for (int j = 0; j < 4; ++j)
    {   
        if(matrix[i][0]>=0&&matrix[i][j+1]<4)
        {
        fprintf(data, "%d,%d ",matrix[i][j],matrix[i][j+1]);
        }
        else
            fprintf(data, "%d ",matrix[i][j]);
    }
    fprintf(data, "\n");
    }
   fclose(data);
 return = 0;
 }

我知道我最大的错误是 if 语句的条件,但我不知道如何在这种情况下正确编写它。

我想获得这个输出:

1,2 3 4
2,3 5 6
9,8 4 5
5,3 1 2

如何修复 if 语句或执行不同的操作来获得该输出?

最佳答案

你很接近,但你的逻辑有点偏离,尝试一次打印一个,然后检查内部 for 循环的索引是否为 0 索引,然后在末尾附加逗号。

此外,在您的 return 语句中,您还提供了要返回的值,因此: return 0;您不能指定返回值

希望有所帮助,我使用 printf 完成了我的操作,然后将其改回 fprintf,因此可能存在错误,您可能需要修复

#include <stdio.h>

int main(){

    FILE *data;
    int matrix[4][4] = {
        {1,2,3,4},
        {2,3,5,6},
        {9,8,4,5},
        {5,3,1,2}
    };
    data = fopen("output.txt","w");

    for (int i = 0; i < 4; ++i)
    {
        fprintf(data, "%d,", matrix[i][0]);
        for (int j = 1; j < 4; ++j)
        {   
            fprintf(data, "%d ", matrix[i][j]);
        }
        fprintf(data, "\n");
    }
    return 0;
 }

关于c - 如何用C语言正确编写文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54413272/

相关文章:

c - 为什么 pow(n,2) 在 n=5 时使用我的编译器和操作系统返回 24?

c - 以原子方式打开和锁定文件

c - 在c中将2个字符加在一起的问题

在没有 C 库的情况下创建和调整动态数组?

c - 如何在 yacc 中使用 yylval 和 union

将 void 指针复制到另一个 void 指针?

c - 在内存中打开和加载文件的方法

c - 调用相同函数时的线程问题

c - 将for循环的测试条件设置为指针有什么作用

c - 如何计算不在给定范围内的数字