【问题标题】:Linux/C: Writing command-line arguments to a text file as separate lines?Linux/C:将命令行参数作为单独的行写入文本文件?
【发布时间】:2017-08-20 02:29:02
【问题描述】:

我制作了一个简单的程序,它从命令行读取输入,将其保存到文本文件中,然后读取并打印文本文件。

所以我一直在尝试修改它,而不是将参数保存为一大行字符串,而是将每个参数保存为文本文件中自己的一行。

我的代码:

#include <stdio.h>

int main(int argc, char *argv[])
{
 FILE *filePointer;
 filePointer= fopen("number.txt","w");

 if(argc == 1)
 {
   printf("give at least one number!\n");
 }

 for(int i = 1; i < argc; i++)
 {
   fprintf(filePointer, argv[i]);
 } 
 fclose(filePointer);

 char readBuffer[100] = " ";

 filePointer= fopen("number.txt","r");
 while(fgets(readBuffer,sizeof(readBuffer),filePointer))
 {
   printf("\nNumber: %s\n", readBuffer);
 } 
 fclose(filePointer);
}

所以当用两个参数调用程序时:./code 12345678 9101213

而不是这个:

number: 12345678910111213

我会得到这个:

number: 12345678
number: 910111213

【问题讨论】:

  • fprintf 的第二个参数是一个格式字符串。 调用./code '%s %s %s %s' 很可能会使你的程序崩溃。
  • 邢的建议确实奏效了!如此简单的解决方法 :) 我还有很多东西要学习 C 语法。

标签: c linux file command-line


【解决方案1】:

在将行保存到文件时,您应该将“\n”添加到 argv[i]。比如:

for(i = 1; i < argc; i++)
{
  fprintf(filePointer, "%s\n", argv[i]);
}

【讨论】:

    猜你喜欢
    • 2018-10-14
    • 1970-01-01
    • 1970-01-01
    • 2014-02-26
    • 1970-01-01
    • 2018-07-10
    • 2018-02-09
    • 2013-10-17
    • 2010-09-16
    相关资源
    最近更新 更多