Sscanf问题和从命令行读取
你好,哈哈,又来了。 C-Unix 我在读这样的东西: a、 输出[23+10i]Sscanf问题和从命令行读取,c,command-line,segmentation-fault,scanf,C,Command Line,Segmentation Fault,Scanf,你好,哈哈,又来了。 C-Unix 我在读这样的东西: a、 输出[23+10i] sscanf(argv[count], "[%d%c%di]", &a, &operand1, &b); 我想分开如下: a=23 b=10 操作数='+' 但是我得到了SEGFULT(内核转储)错误,我做错了什么 顺便说一下,非常感谢你回答我所有愚蠢的问题这对我很有用 #include <stdio.h> int main(int argc, char **argv) {
sscanf(argv[count], "[%d%c%di]", &a, &operand1, &b);
我想分开如下:
a=23
b=10
操作数='+'
但是我得到了SEGFULT(内核转储)错误,我做错了什么
顺便说一下,非常感谢你回答我所有愚蠢的问题这对我很有用
#include <stdio.h>
int main(int argc, char **argv) {
int a, b;
char operand1;
int n;
printf("scanning argv[argc - 1]: %s\n", argv[argc - 1]);
/* It works for me */
n = sscanf(argv[argc - 1], "[%d%c%di]", &a, &operand1, &b);
printf("%d values read\n", n);
if (n != 3) printf("there was an error in scanf ...\n");
printf("The values were %d, %c, and %d\n", a, operand1, b);
return 0;
}
#包括
int main(int argc,字符**argv){
INTA,b;
字符操作数1;
int n;
printf(“扫描argv[argc-1]:%s\n”,argv[argc-1]);
/*它对我有用*/
n=sscanf(argv[argc-1],“[%d%c%di],&a,&O操作数1,&b);
printf(“%d个读取值\n”,n);
如果(n!=3)printf(“scanf中有一个错误…\n”);
printf(“值为%d、%c和%d\n”,a,操作数1,b);
返回0;
}
和一个示例运行:
$ ./a.out [23+43i]
scanning argv[argc - 1]: [23+43i]
3 values read
The values were 23, +, and 43
美元/年出[23+43i]
扫描argv[argc-1]:[23+43i]
读取3个值
数值分别为23、+、和43
请注意,argv[argc]
是一个空指针。它适合我
#include <stdio.h>
int main(int argc, char **argv) {
int a, b;
char operand1;
int n;
printf("scanning argv[argc - 1]: %s\n", argv[argc - 1]);
/* It works for me */
n = sscanf(argv[argc - 1], "[%d%c%di]", &a, &operand1, &b);
printf("%d values read\n", n);
if (n != 3) printf("there was an error in scanf ...\n");
printf("The values were %d, %c, and %d\n", a, operand1, b);
return 0;
}
#包括
int main(int argc,字符**argv){
INTA,b;
字符操作数1;
int n;
printf(“扫描argv[argc-1]:%s\n”,argv[argc-1]);
/*它对我有用*/
n=sscanf(argv[argc-1],“[%d%c%di],&a,&O操作数1,&b);
printf(“%d个读取值\n”,n);
如果(n!=3)printf(“scanf中有一个错误…\n”);
printf(“值为%d、%c和%d\n”,a,操作数1,b);
返回0;
}
和一个示例运行:
$ ./a.out [23+43i]
scanning argv[argc - 1]: [23+43i]
3 values read
The values were 23, +, and 43
美元/年出[23+43i]
扫描argv[argc-1]:[23+43i]
读取3个值
数值分别为23、+、和43
请注意,
argv[argc]
是一个空指针。计数的值是多少?a
、operan1
和b
的声明是什么?很难说,但是打印argv[count]以确保它是您想要的参数。[
是一个shell元字符,可能会导致你的参数与你想象中的不同。如果你在参数周围加引号,你会得到同样的结果吗:/a.out“[23+10i]”“
?@Adam nope,即使加上引号,它也会不断出现segfault.count=1,我会打印出来。>$a.out“[23+45i]”命令行有1个参数:1:[23+45i]分段错误(内核转储)count
的值是多少?a、operan1
和b
的声明是什么?很难说,但打印argv[count]以确保它是您想要的参数。[
是一个shell元字符,可能会导致你的参数与你想象中的不同。如果你在参数周围加引号,你会得到同样的结果吗:/a.out“[23+10i]”“
?@Adam nope,即使加上引号,它也会不断出现segfault.count=1,我会打印出来。>$a.out“[23+45i]”命令行有1个参数:1:[23+45i]分段错误(堆芯转储)