myod

MyOD

过程与结果

过程

以下是重新做一次的截图,比较整洁

代码

main.c

#include "head.h"
#include <stdio.h>
void main()
{ 
  char txtname[50];
  printf("input txtname:");
  scanf("%s",txtname);
  asc(txtname);
  hex(txtname);
}

asc.c

#include "head.h"
#include <stdio.h>
void asc(char *txtname)
{
      FILE *fp;
      char ch;
	  fp=fopen(txtname,"r");
	  ch=fgetc(fp);
      printf("ascii  output:\n");

  while(ch!=-1)
  {
     if(ch=='\n')
    	printf("\n");
     else
    	printf("%4d",ch);
    	ch=fgetc(fp);
  }
  printf("\n");
  fclose(fp);

}

hex.c

#include "head.h"
#include <stdio.h>
void hex(char *txtname)
{
  FILE *fp;
  char ch;
  printf("hex  output:\n");
  fp=fopen(txtname,"r");
  ch=fgetc(fp);
  while(ch!=-1)
  {
    if(ch=='\n')
    printf("\n");
    else
    printf("%4x",ch);
    ch=fgetc(fp);
   }
   printf("\n");
   fclose(fp);
}

head.h

#ifndef HEAD_H
#define HEAD_H


void hex(char *txtname);
void asc(char *txtname);



#endif

makefile

myod_m:main.o asc.o hex.o
	gcc main.o asc.o hex.o -o myod_m
main.o:main.c head.h
	gcc -c main.c -o main.o
asc.o:asc.c head.h
	gcc -c asc.c -o asc.o
hex.o:hex.c head.h
	gcc -c hex.c -o hex.o

test.txt

随便写点就可以

问题与解决

问题

C语言判断结尾出现了错误
如下图:

解决

问题的原因是C代码中的判断结尾条件写成了!='\0',应该为!=EOF或!=-1
由于字符的值不可能为负,所以这样可以判断文字是否结束(EOF=-1)
更多关于判断结尾的问题

posted @ 2020-10-11 21:25  20181204王浩博  阅读(96)  评论(0编辑  收藏  举报