A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

(1)利用指针保存字符串
          char *str1;
          scanf("%c", str1);
        想要计算用户输入字符串的长度怎么计算 ?  int length1 = strlen(str);  这样可以么?
        
        利用数组保存字符串
        char str[100];
        scanf("%c", str);
        这种方式计算用户输入字符串  int length = strlen(str);就可以

(2)还有个问题是如果想要遍历用户输入的字符串
       利用数组保存用户输入
        for (int i=0; i<length; i++)
        {
            printf("%c",str[i])
        }
      
      利用指针保存用户输入的字符串,遍历的话要怎么遍历
     // 下面这样写对么?
     for (int i=0; i<length1; i++)
     {
         printf("%c", *p[i]);
     }

4 个回复

倒序浏览
(1)
  1. char *str1;
  2. scanf("%c", str1);
复制代码
这样是行不通的,因为没有在电脑中分配内存,而创建的
char *str1这个指针,指向的内存是不确定的,所以这个
内存是不能读取的,更不能修改。所以,两条语句会出错。
  1. char str[100];
  2. scanf("%c", str);
  3. int length = strlen(str);
复制代码

length的值一直为103,因为scanf("%c", str);这个语句是
输入一个字符,不会在输入的字符后面添加'\0',所以,
strlen会一直读取str,直到出现'\0'。把scanf("%c", str);
改成scanf("%s", str);那么结论成立
(2)
  1.   for (int i=0; i<length1; i++)
  2.      {
  3.          printf("%c", *p[i]);
  4.      }
复制代码

printf("%c", *p);这句话不对。指针不能用*p这种格式,
你可以写成printf("%c", *(p+i));
*(p+i) == str;
回复 使用道具 举报
庐山烟雨浙江潮 发表于 2015-7-9 13:39
(1)这样是行不通的,因为没有在电脑中分配内存,而创建的
char *str1这个指针,指向的内存是不确定的, ...

对对,接收用户输入的时候应该是 scanf("%s", str)

  利用指针创建的字符串  char *str = "itcast"
        想要计算这个指针指向的字符串的长度怎么计算呀?
         利用strlen函数行么?
回复 使用道具 举报
OUT___Man 发表于 2015-7-9 15:41
对对,接收用户输入的时候应该是 scanf("%s", str)

  利用指针创建的字符串  char *str = "itcast"

不可以,我在调试的时候,不能对指针用strlen()函数
回复 使用道具 举报
庐山烟雨浙江潮 发表于 2015-7-11 09:45
不可以,我在调试的时候,不能对指针用strlen()函数

我回复错了……我调试错了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马