c语言数组 字符串-c语言数组,字符串,越界

问题描述

c语言数组,字符串,越界

#include
int main(){
char a[4];
gets(a);
puts(a);
return 0;

}
为什么我输入超过4个字符,也能全部输出????????

解决方案

应该是地址越界。 但是超出去的地址没有被改写吧。
试试:
#include
int main(){
char a[4];
char b[100] = {0};
gets(a);
puts(a);
puts(b);
return 0;

}

解决方案二:

字符串输入越界问题
建议使用fgets(http://baike.baidu.com/view/656654.htm

gets(a) 改成fgets(a, 4, stdin)

时间: 2024-12-25 09:37:25

c语言数组 字符串-c语言数组,字符串,越界的相关文章

字符串-[c语言]关于 scanf() 和 char数组 的小实验的问题

问题描述 [c语言]关于 scanf() 和 char数组 的小实验的问题 写了三个小的几乎一样的test代码,但是输出却不同,不明白为什么,求大神指点.全部代码如下:#include void sub1(void); int main(){ /*test1*/ sub1(); /*test2 */char w0[2]={'a''a'}; char * pc0 = w0; printf("" w1 = %s""w0); /*wrong*/printf("&

C语言字符串与字符数组

问题描述 #include "stdafx.h"#include "string.h"int main(int argc, char* argv[]){//char b[5] = {"hello"}; //编译时报错char b[6] = {"hello"};//或//char b = {"hello"}; //正确char a[5] = {'h', 'e', 'l', 'l', 'o'};printf(&

c语言数组定义-c++中的字符串数组问题

问题描述 c++中的字符串数组问题 char str[]; str="i love china"; 请问这样的语法有问题吗? 解决方案 在定义数组时一般要指明数组长度,如果定义时直接初始化,可以不指定长度,如: char str[]="i love china"; 所以你的写法在语法上是错误的. 解决方案二: char str[100]; str="i love china"; 解决方案三: 测试一个程序,将多个字符串数组依次遍历,找出待查找的字

c语言字符串-编一个跟字符串有关的C语言程序

问题描述 编一个跟字符串有关的C语言程序 首先要定义2个数组 然后输入2个字符串 再分别求出字符串的长度 接着比较2个字符串的大小 最后链接在一起 下面是我自己弄的,请看看 #include #include int main() { char q[50],p[10]; gets(q); gets(p); printf("q的字符串长度为%dn",strlen(q)); printf("p的字符串长度为%dn",strlen(p)); printf("%d

定义一个数组,为什么这个数组里面既可以是单个的字符用逗号隔开,也可以是字符串呢

问题描述 定义一个数组,为什么这个数组里面既可以是单个的字符用逗号隔开,也可以是字符串呢 定义一个数组,为什么这个数组里面既可以是单个的字符用逗号隔开,也可以是字符串呢,字符串和字符的关系 解决方案 字符数组可以直接用双引号,这是C语言为了方便字符串定义而开的特例. 解决方案二: 字符串是又一个个字符组合而成定义数组时数组里面既可以是单个的字符用逗号隔开,那是一个个对数组的元素进行赋值也可以是字符串那是因为在内存中,一个数组里面的元素其实它们地址是相连的,只要得到首地址再加上每个地址块大小,变可

c语言-C语言中的指针和数组的初始化

问题描述 C语言中的指针和数组的初始化 char a[]=""abcdef"";char *p =""cdefg"";a[1]='A';p[1]='A'; 这段代码有什么问题?#include int main(){ char amessage[]=""now is the time""; char *pmessage = ""now is the time"

c语言有关于纸牌游戏的字符串识别问题

问题描述 c语言有关于纸牌游戏的字符串识别问题 有关字符串识别的问题,实在不明白应该是什么思路,求思路,最好有代马,跪谢!!! 解决方案 首先把字符串放到一个数组里面,字母全部用数字代替.遍历数组,全部异或,得到数值再挨个与数组中的数字对比,如果有相等,就是二对. 解决方案二: 加个变量记着...

c语言编程-C语言关于使用结构体数组的问题

问题描述 C语言关于使用结构体数组的问题 #include struct Student { int mun; long char name[5]; int score[3]; struct Student *next; }; int main() { struct Student a,b,c,*head,*p; a.mun=10101;a.name="张丹";a.score[0]=89;a.score[1]=95;a.score[2]=91; b.mun=10103;a.name=&

深入解析C++和JAVA的字符串_C 语言

所有的字符串类都起源于C语言的字符串,而C语言字符串则是字符的数组.C语言中是没有字符串的,只有字符数组. 谈一下C++的字符串:C++提供两种字符串的表示:C风格的字符串和标准C++引入的string类型.一般建议用string类型,但是实际情况中还是要使用老式C风格的字符串.1.C风格的字符串:C风格字符串起源于C,并在C++中得到扩展.字符串存储在一个字符数组中,例如:        const char *str = "zhangdan";(不要忘掉最后的\0)       

C语言求解最长公共子字符串问题及相关的算法分析_C 语言

题目:如果字符串一的所有字符按其在字符串中的顺序出现在另外一个字符串二中,则字符串一称之为字符串二的子串.注意,并不要求子串(字符串一)的字符必须连续出现在字符串二中.请编写一个函数,输入两个字符串,求它们的最长公共子序列,并打印出最长公共子序列. 例如:输入两个字符串BDCABA和ABCBDAB,字符串BCBA和BDAB都是是它们的最长公共子序列,则输出它们的长度4,并打印任意一个子序列.分析:求最长公共子序列(Longest Common Subsequence, LCS)是一道非常经典的动