首页 > 解决方案 > 如何使用 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以匹配我输入的字符串的长度感到困惑。

标签: cstringpointers

解决方案


在 C 中找出字符串长度的唯一方法是遍历所有字符串,直到到达结尾。

在 C 中,字符串的结尾由一个空字符标记,它可以转义为'\0'.

知道了这一点,我们可以编写如下代码:

int length = 0;
while (string[length] != '\0')
    length++;

上面的代码逐个字符地遍历整个字符串,增加长度直到找到一个空字符。当循环退出时,以存储在length变量中的字符串的长度结束。

注意:有一个名为(在头文件中strlen原型化)的函数就是这样做的。string.h


推荐阅读