To read a string should we use &? scanf("%s", word); or scanf("%s", &word);?
时间: 2024-06-23 22:01:58 浏览: 5
当你使用`scanf`函数从标准输入读取字符串时,`%s`转换说明符会自动处理空字符('\0'),所以在大多数情况下,直接写`scanf("%s", word)`就足够了。这会将读取到的字符串内容存储到`word`变量中,包括结束的空字符。
然而,如果你担心`scanf`可能会改变`word`的地址(例如,如果它是一个指针),或者你想确保读取的内容不会覆盖后续的内存区域,这时你可以使用`&word`来传递`word`的地址,即`scanf("%s", &word)`。这样,`scanf`会把字符串内容存储到`word`指向的内存位置,而不是`word`本身。
相关问题
scanf("%s", &a,20);
scanf("%s", &a,20)是一个C语言中的输入函数,用于从标准输入流中读取字符串。其中%s表示读取字符串,&a表示将读取的字符串存储到变量a中,20表示最多读取20个字符。如果输入的字符串长度超过20个字符,则会发生缓冲区溢出的错误。
与scanf("%5.2f",&a)不同,scanf("%s", &a,20)是用于读取字符串的,而不是读取浮点数。另外,scanf("%5.2f",&a)中的%5.2f表示读取一个浮点数,其中5表示最多读取5个字符,.2表示保留2位小数。
char* string; scanf("%s",&string);错在哪
`char* string` 是一个字符指针,它只是一个指针变量,没有为它分配内存空间。在使用它之前需要为其分配内存空间。
`scanf("%s", &string)` 语句中,`&string` 是一个指向指针的指针,而 `scanf()` 函数需要的是指向字符数组的指针,因此这里的传参方式也是错误的。
正确的写法应该是:
```c
char string[100]; // 假设最多读入 100 个字符
scanf("%s", string);
```
这里我们使用了一个固定长度的字符数组 `string`,可以通过 `scanf()` 函数来读取用户输入的字符串。注意,`scanf()` 函数会在读取到空格或换行符时停止,因此只能读取一段不含空格的字符串。如果需要读取含空格的字符串,可以使用 `fgets()` 函数来代替 `scanf()` 函数。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)