【发布时间】: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