如何在C语言中将命令行参数写入文件且不输出(null)?
解决命令行参数写入文件末尾出现(null)的问题
问题根源是你的循环条件错误:argv数组的有效下标范围是0到argc-1,argv[argc]是系统规定的NULL指针。你的循环for (int i = 1; i <= argc; i++)会在最后一次循环时访问argv[argc],fprintf输出%s遇到NULL时就会打印出(null)。
修正后的代码如下:
#include <stdio.h> int main(int argc, char *argv[]) { FILE *file = fopen("file.txt", "a+"); // 循环条件改为i < argc,避免访问argv[argc]这个NULL指针 for (int i = 1; i < argc; i++) { fprintf(file, " %s", argv[i]); } fputs("\n", file); // add newline at the end fclose(file); }
简单说明:argc代表传递给程序的参数总数(包含程序自身路径argv[0]),要遍历用户输入的命令行参数,从i=1开始,到i < argc结束就刚好覆盖所有有效参数,不会触碰到末尾的NULL值。
内容的提问来源于stack exchange,提问作者user21352310
相关产品推荐
相关产品推荐

