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)
更多关于判断结尾的问题