[Segmentation Fault] Oops! The filename points to a constant string

本文通过一个简单的C语言程序示例介绍了尝试修改常量字符串时导致的段错误。该程序尝试通过scanf函数修改一个初始化为常量字符串的指针变量,这违反了常量内存区域的保护机制。

We can compile the following program using the gcc compiler. 

But when running it, we get a segmentation fault.

Why ?

#include <stdio.h>
int main()
{
  // The following statement is equal to " constant char* filename = "file1.txt"; "in c++
  char* filename = "file1.txt"; // Initialization and after that filename points to a constant string.
  printf("\nPlease input for the filename ==> ");
  scanf("%s", filename); // Try to modify a constant string. It will cause a segmentation fault !
  printf("\nThe file name you have input is %s", filename);
  return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值