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日

悬赏问题

  • ¥15 各位请问平行检验趋势图这样要怎么调整?说标准差差异太大了
  • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题
  • ¥15 wpf界面一直接收PLC给过来的信号,导致UI界面操作起来会卡顿
  • ¥15 init i2c:2 freq:100000[MAIXPY]: find ov2640[MAIXPY]: find ov sensor是main文件哪里有问题吗
  • ¥15 运动想象脑电信号数据集.vhdr
  • ¥15 三因素重复测量数据R语句编写,不存在交互作用
  • ¥15 微信会员卡等级和折扣规则
  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab