程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何使用来自命令行的输入文件在 linux 上运行 C 代码?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决如何使用来自命令行的输入文件在 linux 上运行 C 代码??

开发过程中遇到如何使用来自命令行的输入文件在 linux 上运行 C 代码?的问题如何解决?下面主要结合日常开发的经验,给出你关于如何使用来自命令行的输入文件在 linux 上运行 C 代码?的解决方法建议,希望对你解决如何使用来自命令行的输入文件在 linux 上运行 C 代码?有所启发或帮助;

我正在尝试用 C 语言执行一些简单的任务,并在 linux 中从命令行运行它们。 我在使用 C 和从命令行运行代码时都遇到了一些问题,并使用给定的文件名作为参数。我以前从未用 C 编写代码。

从文件中删除偶数。文件名被转移到 程序作为命令行中的参数。节目变了 这个文件。

我该怎么做?

  • 从文件中读取并将结果写入同一文件
  • 从文件中读取数字而不是数字(例如:我需要能够读取“22”作为单个输入,而不是包含“2”的两个单独字符)
  • 在 linux 中通过参数给出文件名。 (例如:./main.c file.txt)

我尝试编写 c 代码:

#include <stdio.h>
int main ()
{
    file *f = fopen ("arr.txt","r");
    char c = getc (f);
    int count = 0;
    int arr[20];
    while (c != EOF)
    {
        if(c % 2 != 0){
            arr[count] = c;
            count = count + 1;
        }
        c = getc (f);
    }


    for (int i=0; i<count; i++){
            putchar(arr[i]);
    }
    fclose (f);
    getchar ();
    return 0;
} 

解决方法

我会这样做(删除额外的声明 => 微优化)

  /**
   * check if file is avaiable.
   */ 
  if (f == NULL)
  {
    printf("File is not available \n");
  }
  else
  {
    
    /**
     * Populate array with even numbers.
     */ 
    while ((ch = fgetc(f)) != EOF)
        ch % 2 != 0 ? push(arr,ch); : conTinue;

    /**
     * Write to file those numbers.
     */ 
    for (int i = 0; i < 20; i++)
        fprintf(f,"%s",arr[i]);
  }

推送实现:

void push(int el,int **arr)
{
    int *arr_temp = *arr;

    *arr = NULL;
    *arr = (int*) malloc(sizeof(int)*(n - 1));

    (*arr)[0] = el;
    for(int i = 0; i < (int)n - 1; i++)
    {
        (*arr)[i + 1] = arr_temp[i];
    }
}

为了写入同一个文件,不关闭和打开它,你应该提供两种方法,w+(写入和读取),这个方法会清除它的内容。

因此,为此更改打开文件的行。

FILE *f = fopen ("arr.txt","w+");

您应该寻找实现动态数组(指针和内存管理)的方法。

在这个例子中,你可以简单地继续在主循环中自己编写一个临时变量来存储一系列数字,并将这些值堆叠起来

像这样(伪代码,玩得开心:)):

DELIMITER one of (',' | '|' | '.' | etc);

char[] temp;
if(ch not DELIMITER)
  push ch on temp;
else
  push temp to arr and clear it's content;

希望这有用。

,

这是一个满足您要求的完整程序:

  • 将结果写入同一个文件 - 它在文件中保留一个读写位置,并在数字已被删除的情况下将字符复制到文件开头;最后,现在较短的文件必须被截断。 (请注意,对于大文件,写入第二个文件会更有效率。)
  • 从文件中读取数字而不是数字 - 没有必要读取整数,存储数字的写入开始位置就足够了(这可以在每个非数字处完成)以及最后一位的奇偶校验。
  • 通过参数给出文件名 - 如果定义 a b variablename1_AAA variablename2_AAA 1: 1 4 4 8 2: 2 5 10 20 3: 3 6 18 36 ,第一个参数在 int main(int argc,char *argv[]) 中,如果 argv[1] 至少为 2。
argc

大佬总结

以上是大佬教程为你收集整理的如何使用来自命令行的输入文件在 linux 上运行 C 代码?全部内容,希望文章能够帮你解决如何使用来自命令行的输入文件在 linux 上运行 C 代码?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。