I want to write a program, at first I input a number N, then I want to get the name (can consist of multiple words) and price of N items one by one. Example:
3
item a // the name can consist of multiple words
25.00
item b
12.50
item c
8.12
Next I want to process this data, however i got stuck on the scanning part. my code looks like this:
 #include <stdio.h>
int main(){
  int n;
  char name[50];
  int price;
  scanf("%d\n", &n);
  for(int i = 0; i < n; i++){
    scanf("%s\n%d",name,&price);
    printf("%s , %d", name, price);
  }
  printf("end");
}
This works for a single word item, but if the item has a space in it will not continue scanning. I tried using the gets() function, however I still don't have the right result. the code:
  for(int i = 0; i < n; i++){
    gets(name);
    scanf("%d\n",&price);
    printf("%s , %d\n", name, price);
  }
  printf("end");
returns:
3             // Input 3 items
item a        // name of first item
1             // price of item 1
item b        // name of item 2
item a , 1    // the print of the first item
2             // price of item 2
item c        // name of item 3
item b , 2    // print of item 2
3             // price of item 3
word          // no clue where this new input came from
end           // end of scanning
My question is, how would I go about correctly scanning an input such as this? I also tried changing the scan function into  while((c = getchar()) != '\n');, but got the same result...
 
     
     
     
    