How do I properly 'printf' an integer and a string in C?

后端 未结 3 924
遥遥无期
遥遥无期 2021-01-03 19:30

I have the following code:

char *s1, *s2;
char str[10];

printf(\"Type a string: \");
scanf(\"%s\", str);

s1 = &str[0];
s2 = &str[2];

printf(\"%s\\         


        
相关标签:
3条回答
  • 2021-01-03 19:54

    scanf("%s",str) scans only until it finds a whitespace character. With the input "A 1", it will scan only the first character, hence s2 points at the garbage that happened to be in str, since that array wasn't initialised.

    0 讨论(0)
  • 2021-01-03 19:57

    You're on the right track. Here's a corrected version:

    char str[10];
    int n;
    
    printf("type a string: ");
    scanf("%s %d", str, &n);
    
    printf("%s\n", str);
    printf("%d\n", n);
    

    Let's talk through the changes:

    1. allocate an int (n) to store your number in
    2. tell scanf to read in first a string and then a number (%d means number, as you already knew from your printf

    That's pretty much all there is to it. Your code is a little bit dangerous, still, because any user input that's longer than 9 characters will overflow str and start trampling your stack.

    0 讨论(0)
  • 2021-01-03 20:14

    Try this code my friend...

    #include<stdio.h>
    int main(){
       char *s1, *s2;
       char str[10];
    
       printf("type a string: ");
       scanf("%s", str);
    
       s1 = &str[0];
       s2 = &str[2];
    
       printf("%c\n", *s1);   //use %c instead of %s and *s1 which is the content of position 1
       printf("%c\n", *s2);   //use %c instead of %s and *s3 which is the content of position 1
    
       return 0;
    }
    
    0 讨论(0)
提交回复
热议问题