core dumped in C programming

守給你的承諾、 提交于 2019-12-08 13:16:49

问题


I have a homework that's supposed to ask the user for a number and make a square with the length being the number they put. If the user types in 5, then the program needs to make a square that is 5x5.

When I compile it, i get a segmentation fault (core dumped). I have no idea where the problem is. Can you guys help me? I even tried running the program with paper and pencil to see what my output would be and it seemed fine to me.

#include <stdio.h>

int main (){

int size, limit = 0;
char ch = 'A';
int rows = 1;

printf("Enter size:\n");
scanf("%d", size);

while (limit <= size){

    if (rows == 1 || rows == size){  /* This only works in first and last row */
       printf("%c", ch);
       limit++;
    }

    if (rows != 1 && rows != size){ /* This only works if row is not 1 and last row*/
       do{
            printf("%c", ch);
            limit++;

            do {
               printf(" ");
               limit++;
            } while (limit != size -1);

            limit++;

            if (limit == size){
               printf("%c", ch);
               rows++;
               limit = 0;
               printf("\n");
            }

       }while (rows != 1 && rows != size);  /* while not in first AND last row */

    }

回答1:


int size, limit = 0;

...

scanf("%d", size);

Enable your compile warnings, this is wrong.




回答2:


You are passing an int to scanf, pass its address like so

scanf("%d", &size);



回答3:


scanf("%d", size);

You are passing the wrong argument to scanf. You are passing an integer but what you need to pass is a pointer to allocated storage where the interpretation of the extracted characters is stored in memory.

For accomplishing this, remember the & (ampersand), the address-of operator, is what you use in C to get a memory address. So in other words, what you must pass to scanf is the address-of the variable that you want to use to store the data.




回答4:


scanf("%d", size);

& is missing in scanf statement

scanf("%d", &size);



来源:https://stackoverflow.com/questions/19457979/core-dumped-in-c-programming

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!