黑马程序员技术交流社区

标题: 用C语言动态输入一个数组要怎么弄 [打印本页]

作者: greatboygirl    时间: 2015-5-5 21:37
标题: 用C语言动态输入一个数组要怎么弄
代码是这样int main() {
   
   
    char  *pStr;//定义字符数组接收字符串变量
   
    printf("请输入一串字符串:\n");
   
   
    scanf(“%s”,pStr);//从键盘接收一串字符串
   

    int i;
   
    for( i = 0; pStr[i]!='\0'; i++)//遍历字符串
下面是遍历字符串就不接着写了,一运行就崩溃 求教
        

作者: mony    时间: 2015-5-5 21:58
如果遇到这种情况,楼主可以创建char pStr[1000],类似的数组存放字符串,就算长度超了,一般不会出问题,除非运气差,那超出的内存被占用
作者: greatboygirl    时间: 2015-5-6 13:09
我是想动态输入长度的

作者: 陈凡1993    时间: 2015-5-7 00:32
你的pStr是指针变量,遍历当然不行啊,你把char *pStr改成char pStr[100]就好了
作者: ydy96315    时间: 2015-5-7 07:41
  1. #include <stdio.h>

  2. int main()
  3. {
  4.    
  5.     char  *pStr;//定义字符数组接收字符串变量
  6.    
  7.     printf("请输入一串字符串:\n");
  8.    
  9.    
  10.     scanf("%s",pStr);//从键盘接收一串字符串
  11.    
  12.    
  13.    
  14.    
  15.     for( int i = 0; pStr[i]!='\0'; i++)
  16.     {
  17.         printf("%c",pStr[i]);
  18.         if (pStr[i+1]=='\0') {
  19.             printf("\n");
  20.         }
  21.     }
  22.    

  23. }
复制代码
没有问题,用英文输入法修改错误的符号以后正常运行

作者: 空白_o6H66    时间: 2015-5-7 10:32
肯定出错啊,因为你只是定义了一个地址*pStar 输入的字符已经被*pStar所指。但是你在循环的时候*pStar就会一个一个向后指,但是结束的时候呢,没有"/n" 所以是不会停下来滴




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2