C语言 在if语句中检查什么?

  • 本文关键字:语言 if 语句 c scanf execv
  • 更新时间 :
  • 英文 :


我使用sscanf读取用户输入并保存到几个输出。就我的理解而言,如果我有sscanf(input, %s %s %s %s %s, arr[0], arr[1], arr[2], arr[3]),我最多可以输入4个项目,但它不需要4;也就是说我可以把2和arr[2]放在一起,而arr[3]没有值。然而,我认为我不理解的东西,因为后来当我检查arr[2]/arr[3]的值,他们不是null,当我认为字符串只是用初始化。请看看我的代码,告诉我if语句应该检查什么。

printf("Enter a command: ");
char input[20];
char line[5][20];
fgets(input, 20, stdin);
sscanf(input, "%s %s %s %s %s", line[0], line[1], line[2], line[3], line[4]);
....
else {
int status;
if(line[4] != NULL) {
char *args[6];
args[0] = line[0];
args[1] = line[1];  
args[2] = line[2];
args[3] = line[3];
args[4] = line[4]; 
args[5] = NULL;
if ( fork() == 0 ) {
execv( args[0], args ); // child: call execv with the path and the args
}
else {
wait( &status );  
}    

使用Jerry Jeremiah所说的注释,我将if语句中的[x]行更改为指针并检查是否为NULL,而不是将声明更改为指针。

scanf将尝试得到您所要求的一切。你要5个,它就试着得到5个

sscanf(input, "%19s %19s %19s %19s %19s", line[0], line[1], line[2], line[3], line[4]);

如果没有规范,它将占用用户倾向于提交的所有字符,从而导致缓冲区溢出。坏主意。

我会一次接受一个参数,或者把所有的参数作为一个整体。

相关内容

  • 没有找到相关文章

最新更新