用传递的两个参数调试C程序
我已经修复了代码中的一些语法错误,现在程序编译得很好。但是当我执行程序时,输出文件是空的。outputFile的内容应按相反顺序排列。我试图在用传递的两个参数调试C程序,c,codelite,C,Codelite,我已经修复了代码中的一些语法错误,现在程序编译得很好。但是当我执行程序时,输出文件是空的。outputFile的内容应按相反顺序排列。我试图在CodeLiteIDE中调试代码 我需要用传递的两个参数(inputFile和outputFile)调试代码。我似乎在CodeLiteIDE中找不到这个选项。我该怎么做 #include <fcntl.h> #include <stdio.h> #include <stdlib.h> #include <unist
CodeLite
IDE中调试代码
我需要用传递的两个参数(inputFile和outputFile)调试代码。我似乎在CodeLite
IDE中找不到这个选项。我该怎么做
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#define BUFFER_SIZE 256
int main (int argc, char *argv[]){
FILE *inputFile, *outputFile;
int fileSize;
int pointer;
char buffer[BUFFER_SIZE];
/* Check for correct user's inputs. */
if( argc !=3 ) {
fprintf(stderr, "USAGE: %s inputFile outputFile.\n", argv[0]);
exit(-1);
}
/* Make sure input file exists. */
if( (inputFile = fopen(argv[1], O_RDONLY))) {
fprintf(stderr, "Input file doesn't exist.\n");
exit(-1);
}
/* Create output file, if it doesn't exist. Empty the file, if it exists. */
if((outputFile = fopen(argv[2], "a+"))) {
fclose(inputFile);
exit(-1);
}
/* Find the size of the input file. */
fileSize = fseek(inputFile, 0, SEEK_END);
/* Read input file and write to output file in reversed order.*/
for(pointer=fileSize-1; pointer>=0; pointer--) {
/*Write content in the buffer to the output file */
while(!feof(inputFile))
{
fgets(buffer, BUFFER_SIZE, inputFile); //reads 256 bytes at a time
fputs (buffer , outputFile );
}
}
fclose(inputFile);
fclose(outputFile);
return(0);
}
#包括
#包括
#包括
#包括
#定义缓冲区大小256
int main(int argc,char*argv[]){
文件*inputFile,*outputFile;
int文件大小;
int指针;
字符缓冲区[缓冲区大小];
/*检查用户输入是否正确*/
如果(argc!=3){
fprintf(stderr,“用法:%s inputFile outputFile.\n”,argv[0]);
出口(-1);
}
/*确保输入文件存在*/
if((inputFile=fopen(argv[1],O_RDONLY))){
fprintf(stderr,“输入文件不存在。\n”);
出口(-1);
}
/*创建输出文件(如果不存在)。清空文件(如果存在)*/
if((outputFile=fopen(argv[2],“a+”)){
fclose(输入文件);
出口(-1);
}
/*查找输入文件的大小*/
fileSize=fseek(inputFile,0,SEEK\u END);
/*按相反顺序读取输入文件并写入输出文件*/
对于(指针=文件大小-1;指针>=0;指针--){
/*将缓冲区中的内容写入输出文件*/
而(!feof(inputFile))
{
fgets(缓冲区,缓冲区大小,输入文件);//一次读取256字节
fputs(缓冲区、输出文件);
}
}
fclose(输入文件);
fclose(输出文件);
返回(0);
}
:
项目设置>>常规>>命令参数:
项目设置>>常规>>命令参数
outputFile=fopen(argv[2],“a+”
不会清空文件。for循环(pointer=fileSize-1;pointer>=0;pointer--)当然会反向计数,但这并不意味着输入是反向读取的。愉快调试:-)首先,查找文件末尾,然后尝试读取256字节。即使这样做有效(但不会),您也会尝试按照原始文件中的相同顺序(相对于256字节偏移量)将这256字节写入新文件。@PaulOgilvie corrected outputFile=fopen(argv[2],“w”)。谢谢。outputFile=fopen(argv[2],“a+”)
不会清空文件。for循环(pointer=fileSize-1;pointer>=0;pointer--)当然会反向计数,但这并不意味着输入是反向读取的。愉快调试:-)首先,查找文件末尾,然后尝试读取256字节。即使这样做有效(但不会),您也会尝试按照原始文件中的相同顺序(相对于256字节偏移量)将这256字节写入新文件。@PaulOgilvie corrected outputFile=fopen(argv[2],“w”)。谢谢。我在IDE中没有看到项目设置>>常规或命令参数。它隐藏在菜单的某个地方吗?谢谢@bolov,我找到了它。我在IDE的任何地方都看不到项目设置>>常规参数或命令参数。它藏在菜单的某个地方吗?谢谢@bolov我找到了它。