【发布时间】:2015-10-20 16:22:18
【问题描述】:
我正在尝试从数组中获取输入、输出和数据文件的名称以进行进一步处理。但是,我遇到了一个奇怪的错误或问题。所以,我的程序没有到达 for 循环。它甚至不打印 for 循环之前的语句。但是,我尝试使用调试器并且程序正在逐步正确打印。因此,当我运行它时它不会打印,而当我逐步调试时它会打印。那很奇怪!
char *method;
method=malloc(25);
method=NULL;
char *dataFileName;
char *inputMethod;
inputMethod=malloc(25);
inputMethod=NULL;
char *inputFileName;
char *outputMethod;
outputMethod=malloc(25);
outputMethod=NULL;
char *outputFileName;
char *commandArray[]={"if=q.txt","of=output.txt"};
char**args=(char**) malloc(sizeof(char*)*256);
args=commandArray;
int i;
printf("Before second for");
for(i=0;i<2;i++)
{
printf("I am here");
if(*args[i]=='d')
{
method=strtok_r(args[i],"=",&dataFileName);
printf("The method given is %s",method);
printf("Data File Name is %s",dataFileName);
}
else if(*args[i]=='o')
{
outputMethod=strtok_r(args[i],"=",&outputFileName);
printf("The output method given is %s",outputMethod);
printf("output File Name is %s",outputFileName);
}
else
{
inputMethod=strtok_r(args[i],"=",&inputFileName);
printf("The input method given is %s",inputMethod);
printf("Input File Name is %s",inputFileName);
}
}
if(method==NULL)
{
dataFileName=malloc(256);
printf("Please Enter A File Name");
scanf("%255s",dataFileName);
printf("%s",dataFileName);
}
if((inputMethod==NULL)||(outputMethod==NULL) )
{
char* array[]={"stdin","stdout"};
if(inputMethod==NULL)
inputMethod=array[0];
if(outputMethod==NULL)
outputMethod=array[1];
}
我正在使用 C 语言中的 Netbeans 进行开发。上面的代码是在 main 中编写的。谢谢!
【问题讨论】:
-
请从阅读C书开始。您的“代码”中有很多基本错误,表明对 C 中的基本概念缺乏理解。
-
你想做什么?第一步是为指针分配内存,在下一行中让它们指向
NULL,然后再次分配内存。 -
我知道我尝试了很多调整以使这个东西以某种方式运行,但仍然无法弄清楚。这就是原因。