呵呵哈哈哦哦 发表于 2022-4-21 16:51:51

救救孩子吧

这是我的代码 想让输入9-265-81452-4中的数字放在数组里,但好像实现不了欸 运行的时候输不出来结果,求求大佬解惑
#include<stdio.h>
int main()
{   char a={0}; int i;
        scanf("%c-%c%c%c-%c%c%c%c%c-%c",&a,&a,&a,&a,&a,&a,&a,&a,&a);

        for(i=0;i<9;i++)
        printf("%c",a);
}
调试的时候会出现这个错误
   program received signal SIGSEGV ,Segmentation fault

风车呼呼呼 发表于 2022-4-21 17:07:37

本帖最后由 风车呼呼呼 于 2022-4-21 17:13 编辑

数组长度为9,怎么可能去存10个数
char a={0};
而这里字符数组初始化也有问题,如果是想初始化字符0就加上单引号,或者就不要初始化,再干脆一点直接用int数组去存岂不是更好

jackz007 发表于 2022-4-21 17:35:31

#include<stdio.h>

int main(void)
{
      char a = {0} , c                                  ;
      int i , n                                             ;
      for(c = n = 0 ; n < 10 && c != '\n' ;) {
                c = getchar()                                 ;
                if(c >= '0' && c <= '9') a = c          ;
      }
      printf("\n")                                          ;
      if(n == 10) {
                for(i = 0 ; i < n ; i ++) printf("%c" , a) ;
                printf("\n")                                  ;
      } else printf("Error !\n")                            ;
}
      编译、运行实况:
D:\\>g++ -o x x.c

D:\\>x
9-265-81452-4

9265814524

D:\\>

呵呵哈哈哦哦 发表于 2022-4-22 15:12:59

风车呼呼呼 发表于 2022-4-21 17:07
数组长度为9,怎么可能去存10个数

而这里字符数组初始化也有问题,如果是想初始化字符0就加上单引号,或 ...

哦对对对傻了傻了

沐雨尘枫 发表于 2022-4-22 15:32:02

呵呵哈哈哦哦 发表于 2022-4-22 15:12
哦对对对傻了傻了

那你选最佳答案啊

cjgank 发表于 2022-4-22 22:07:27


大兄弟,你要保存字符串,搞这么复杂干啥?

代码如下:
#include <stdio.h>

int main ()
{
    char string = {0};
    scanf ("%s", string);
    printf ("%s\n", string);
    return 0;
}

验证如下:
9-265-81452-4
9-265-81452-4

呵呵哈哈哦哦 发表于 2022-4-23 19:12:45

cjgank 发表于 2022-4-22 22:07
大兄弟,你要保存字符串,搞这么复杂干啥?

代码如下:


因为不想把减号也带进数组里面去来着,它后面要用到这些数字来着。
我现在会了 谢谢啦
页: [1]
查看完整版本: 救救孩子吧