We use cookies to ensure you have the best browsing experience on our website. Please read our cookie policy for more information about how we use cookies.
  • HackerRank Home

    HackerRank

  • |
  • Prepare
  • Certify
  • Compete
  • Apply
  • Hiring developers?
  1. Prepare
  2. Tutorials
  3. 30 Days of Code
  4. Day 1: Data Types
  5. Discussions

Day 1: Data Types

Problem
Submissions
Leaderboard
Discussions
Editorial
Tutorial

    You are viewing a single comment's thread. Return to all comments →

  • dilencevi
    3 months ago+ 0 comments

    For C users. I had some head banging up the wall because of differencies how scanf worked in my WSL environment and a given here environment. Here is a program that worked in my WSL window: // Declare second integer, double, and String variables. int my_integer = 0; double my_duoble = 0.0; char *my_string; char final_string; my_string = (char)malloc(100 * sizeof(char)); final_string = (char*) malloc(200 * sizeof(char)); if(my_string == NULL || final_string == NULL) { printf("Memory allocation failed."); return 1; }

    // Read and save an integer, double, and String to your variables.
    scanf("%d", &my_integer);
    scanf("%lf", &my_duoble);   
    scanf("%[^\n]s", my_string);
    
    // Print the sum of both integer variables on a new line.
    printf("%d\n", i + my_integer);
    
    // Print the sum of the double variables on a new line.
    printf("%.1lf\n", d + my_duoble);
    
    // Concatenate and print the String variables on a new line
    // The 's' variable above should be printed first.
    strcpy(final_string, s);
    strcat(final_string, my_string);
    printf("%s\n", final_string);
    free(my_string);
    free(final_string);
    

    However, in the given environment nothing would be put into my_string. The remedy was to clean out a buffer from the previous input: <...>
    // Read and save an integer, double, and String to your variables. scanf("%d", &my_integer); scanf("%lf", &my_duoble);

    int leftover = 0;
    while ((leftover = getchar()) != '\n' && leftover != EOF);
    
    scanf("%[^\n]s", my_string);
    // Print the sum of both integer variables on a new line.
    printf("%d\n", i + my_integer);
    
        Then my program worked. But adding a buffer cleaning code in my program in WLS, caused it crash.
    

    Just wondering why that may be.... <...>

    Then my program worked. But adding a buffer cleaning code in my program in WLS, caused it crash. Just wondering why that may be....

    -1|
    Permalink
  • Blog
  • Scoring
  • Environment
  • FAQ
  • About Us
  • Support
  • Careers
  • Terms Of Service
  • Privacy Policy