This question already has answers here:
Closed 4 years ago.
segmentation fault using scanf with integer
(2个答案)
我正在制作一种有趣的新编程语言,当我键入'print+:'时,我将插入Pfunc1plus和Pfunc2plus,当您注册这两个抛出数时,会出现错误“程序已停止工作…”
#include <stdio.h>
#include <stdlib.h>

int main(){

char sysF[300];
char Pfunc[300];
int Pfunc1plus; int Pfunc2plus;

scanf("%s",sysF);
// Print
if (strcmp(sysF, "print:") == 0){
    scanf("%s",Pfunc);
    system("cls");
    printf("%s",Pfunc);
}
// Error code
if(strcmp(sysF, "print+:") == 0) {
    scanf("%i %i",Pfunc1plus,Pfunc2plus);
    printf("%i %i",Pfunc1plus+Pfunc2plus);
} // Error code

system("pause >nul");
return 0;
}

最佳答案

两件事:

scanf("%i %i",Pfunc1plus,Pfunc2plus);

scanf将地址传递给变量,因此您需要在&Pfunc1plus前面放置一个运算符(Pfunc2plus)的地址。
printf("%i %i",Pfunc1plus+Pfunc2plus);

您有两个整数格式说明符,但只传递一个参数(Pfunc1plus+Pfunc2plus)。如果要同时打印,请将加法运算符更改为逗号;如果实际要打印和,请删除%i

08-26 14:23