我现在正在学习C中的字符串。
如何使用scanf获取可以执行的字符串
scanf("%s",str1);
对于printf你可以做
printf("The string is %s\n", str1);
我理解,对于scanf来说,这是因为字符串只是一个字符数组,它是一个指针,但是对于printf,你怎么能把变量名称放在int或float上呢?
答案 0 :(得分:10)
scanf
需要读入变量的地址,字符串缓冲区已经表示为地址(指向内存中某个位置的指针,或者分解为指针的数组)。
printf
执行相同操作,将%s
视为指向字符串的指针。
答案 1 :(得分:5)
在C中,当用作函数参数时,作为数组的变量成为指向数组第一个元素的指针 - 因此你的scanf()会看到一个指向内存的指针(假设“str1”是一个数组)。
在你的printf()中,“str1”可以是指向字符串或字符数组的指针(在这种情况下,printf()看到的参数将是指向数组第一个元素的指针)。