不知道数据时什么原因溢出了
# include<stdio.h>
# include<stdlib.h>
void main()
{
FILE *hp;
char name[4][20];
int i;
if((hp=fopen("诗","r"))==NULL)
{
printf("error");
exit(0);
}
while(fgets(name[i],20,hp)!=NULL)
{
printf("%s",name[i]);
i++;
}
fclose(hp);
}
那个诗里的内容是:滚滚长江东逝水
浪花淘尽英雄
是非成败转头空
青山依旧在
如果我讲上面的二维数组改成char name【4】【40】就可以
[解决办法]
utf8编码的话一个汉字3字节,7个字加上末尾\0就需要22个字节存储,20不够。
[解决办法]
还有,你的i也没有赋初值,在有些编译器里能过,但这不是正确的方法
虽然有四句或更多,便你只是读出来显示一下,不作处理,完全不必要用4个串接收,一个大点的串就可以,高效重复使用内存:
#include <stdio.h>
#include <stdlib.h>
void main()
{
FILE *hp;
char name[4*20];
//int i;
if((hp=fopen("诗","r"))==NULL)
{
printf("error");
exit(0);
}
while(fgets(name,4*20,hp)!=NULL)
{
printf("%s",name);
i++;
}
fclose(hp);
}