c - 如何使用 scanf 读取用户输入并根据用户键入的内容创建字符串?
问题描述
我对编程很陌生,我正在努力尝试将指针与数组和字符串连接起来。
int scanString();
int main(void)
{
char string[] = {};
scanString(string);
}
int scanString(char * string)
{
printf("Enter a string without spaces and hit enter: ");
scanf("%s", string);
int length = sizeof(*string);
for(int i=0;i<length;++i){
printf("%c", string[i]);
}
return 0;
}
我修复了从 main 调用函数的方式,现在我不再有分段错误,但现在它只打印出我输入的字符串的第一个字母,因为我正在做int length = sizeof(*string)
的只是一个字符。我对如何正确声明int length
以匹配我输入的字符串的长度感到困惑。
解决方案
在 C 中找出字符串长度的唯一方法是遍历所有字符串,直到到达结尾。
在 C 中,字符串的结尾由一个空字符标记,它可以转义为'\0'
.
知道了这一点,我们可以编写如下代码:
int length = 0;
while (string[length] != '\0')
length++;
上面的代码逐个字符地遍历整个字符串,增加长度直到找到一个空字符。当循环退出时,以存储在length
变量中的字符串的长度结束。
注意:有一个名为(在头文件中strlen
原型化)的函数就是这样做的。string.h
推荐阅读
- python - 如何从 pytorch 模型并行化模型预测?
- c++ - 如何使用 CPackDeb 创建自启动 C++ systemd 服务?
- office-js - Outlook REST API 在移动设备和桌面设备上返回不同的 itemId
- python - 如何仅获取已识别的文本?
- swift - 三元运算符未正确处理零数据
- javascript - 带日程的云功能
- java - Alternatives to RecyclerView?
- twilio - 使用 Twilio 函数将 JSON 解析为数组 javascript
- javascript - 用纯 Javascript 重写 jQuery 调整大小函数(包括 codepen)
- angular - 外部 Firebase API 运行两次