#include<stdio.h>
#include<string.h>
int main()
{
int n;
scanf("%d",&n);
char a[1000][1000];
int len[n];
getchar();
for(int i=0;i<n;i++)
{
gets(a[i]);
len[i]=strlen(a[i]);
}
int min=len[0];
int flag;
for(int i=0;i<n;i++)
if(min>len[i])
{
min=len[i];
flag=i;
}
puts(a[flag]);
return 0;
}
结果显示的是 Segmentation fault:段错误,检查是否有数组越界,指针异常,访问到不应该访问的内存区域
怎么办呀,看不懂,也不知道哪里错的
程序100%正确。。。尴尬。
#include <stdio.h>
void main()
{
printf("Hello World\n");
}
在linux主机上编译,下载到开发板后运行结果如下:
文字游戏, 不超过就是小于等于, 所以当给的字符串size为1000时, 数组没有空间放'\0' 越界
#include <stdio.h>
#include <string.h>
char charArr[10][1024];
int main()
{
int n;
scanf("%d", &n);
int len[n];
getchar();
for (int i = 0; i < n; i++)
{
gets(charArr[i]);
len[i] = (int)strlen(charArr[i]);
}
int min = len[0];
int flag;
for (int i = 0; i < n; i++)
{
if (min > len[i])
{
min = len[i];
flag = i;
}
}
puts(charArr[flag]);
return 0;
}