当前位置:编程学习 > C/C++ >>

c语言二维数组问题,怎么输入的字母多了就出问题了

#include"stdio.h"
main(void)
{
    FILE *fp;
    char a,i[100][100]={0};
    int  j,k,l,x,y,z;
    if((fp=fopen("file","w+"))==NULL)
    {
        printf("cannot open file\n");
        getch();
        exit(0);
    }
    y=0;z=0;
    while(a!='#')
    {
        a=getchar();
        if(a==' ')
        {y++;z=0;}
        if(a!=' ')
        {i[y][z]=a;
        z++;}
        fputc(a,fp);
    }
    printf("%d",y);
    printf("\n");
    rewind(fp);
    a=fgetc(fp);
    while(a!=EOF)
    {
        putchar(a);
        a=fgetc(fp);
    }
    printf("\n");
    for(j=0;j<100;j++)
    {
    for(k=0;k<100;k++)
      {
      printf("%c",i[j][k]);
      if(i[0][k]=='\0')printf(" ");
      if(i[0][k]=='\0')break;
      }
      if(i[j][0]=='\0')break;
    }
    fclose(fp);
    getch();
}
追问:就加几个头文件爱你就可以了,不过就是字符之间的空格不知道怎么回事,有的多有的少,麻烦你在说说怎么样比较2维数组中每一行的单词,然后输出单词出现的次数,加分给你

答案:#include"stdio.h"
#include <string.h>
#include<stdlib.h>
int main()
{
    FILE *fp;
    char a,i[100][100]={0};
    int  j,k,l,x,y,z;
    if((fp=fopen("file","w+"))==NULL)
    {
        printf("cannot open file\n");
        getchar();
        exit(0);
    }
    y=0;z=0;
    while(a!='#')
    {
        a=getchar();
        if(a==' ')
        {y++;z=0;}
        if(a!=' ')
        {i[y][z]=a;
        z++;}
        fputc(a,fp);
    }
    printf("%d",y);
    printf("\n");
    rewind(fp);
    a=fgetc(fp);
    while(a!=EOF)
    {
        putchar(a);
        a=fgetc(fp);
    }
    printf("\n");
    for(j=0;j<100;j++)
    {
    for(k=0;k<100;k++)
      {
      printf("%c",i[j][k]);
      if(i[0][k]=='\0')printf(" ");
      if(i[0][k]=='\0')break;
      }
      if(i[j][0]=='\0')break;
    }
    fclose(fp);
    getchar();
 return 0;
}

上一个:C语言里面结构体与共同体是啥意思具体指的是什么
下一个:C语言:请高手帮帮忙,问题解决后有额外分加?

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,