markreisen 2022-12-19 13:11 采纳率: 100%
浏览 16
已结题

C语言指针问题,似乎是野指针?

题目:读取文件中的字符串,统计从“a”到“z”26 个字母各自出现的次数,并将
结果放入数组中。如文件中有字符串 abcdefgabcdeabc,输出 33322110000000000000000000。
我写的代码

#include <stdio.h>
int main()
{
    int a[123]={0};//z的ascii码122方便
    char *s;
    scanf("%s",s);
    char *p;//定义另一个指针来搜索字母 
    for(p=s;*p!='\0';p++)//将大写字母也算进去 
        if(*p>='A'&&*p<='Z') 
            *p+=32; 
    for(p=s;*p!='\0';p++)
        if(*p>='a'&&*p<='z')
            a[(int)(*p)]++;
    for(int i=97;i<123;i++)
        printf("%d",a[i]); 
}

用devc++编译没问题。但是在网上在线编译有问题
报错3 Segmentation fault (core dumped) LD_LIBRARY_PATH=/usr/local/gcc-9.2.0/lib64 ./a.out

Exited with error status 139
去网上查了一下好像是指针问题。
谢谢回答。

  • 写回答

3条回答 默认 最新

  • 慕雪华年 C/C++领域新星创作者 2022-12-19 13:59
    关注

    char*s没有分配空间,他只是一个指针变量,并不能直接往里面写入字符串。正确的写法应该是下面这样

       char s[1024];//改成一个数组
       scanf("%s",s);
    

    如果对你有帮助,还请点个采纳,万分感谢!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 12月27日
  • 已采纳回答 12月19日
  • 创建了问题 12月19日

悬赏问题

  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改