返回信息流我的C语言保存在桌面上就运行不出现黑框
保存在C盘里就正常运行出现黑框了呢?
现在我发现 它只要不在桌面这个目录里,都能正常运行
而且我以前放桌面都可以正常运行啊。。。。
这是一条镜像帖。来源:北邮人论坛 / cpp / #34193同步于 2009/12/24
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
求助* 为什么我的C语言运行不出现运行框啊
cheerup
2009/12/24镜像同步9 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
有没有出现黑框是你的项目属性决定的,如果你建立的时候是console,那么你去双击执行,就是看不到结果的。
因为程序很快就运行完了,然后窗口自动消灭掉了。
代码挺长的 这是前面的部分
#include <stdio.h>
#include <stdlib.h>
#define fr_num 3
#define pa_num 6
#define inst_num 12
//int fr_num=3, pa_num=5, inst_num=12;
int count=0;
int instruction[inst_num]={1,2,3,4,1,2,5,1,2,3,4,5};
struct f {
int frame;
int vibit;
int info;
};
struct f page_table[pa_num];
struct g {
int refer;
int page;
};
struct g frame_table[fr_num];
void prodins(void);
int instopage(int ins);
void FIFO(void);
void LRU(void);
void OPT(void);
void Initial(void);
main()
{
int choice;
int seed;
。。。
还是等于没说
不能全发上来么。
【 在 cheerup 的大作中提到: 】
: 代码挺长的 这是前面的部分
: #include <stdio.h>
: #include <stdlib.h>
: ...................
全部程序:
#include <stdio.h>
#include <stdlib.h>
int reserve(char *f[]);
void cat(void);
void retract(void);
void table_insert(void);
void clean(void);
void DTB(void);
void readc(void);
void Initial(void);
char judgec(void);
void error(void);
char c, cc[20];
char *symbol[40]; //符号表
int symbol_count=0, cc_count=0;
int i=0, j=0, m=0, n=0;
char pre=-1, aft=-1;
int row=1, line=0; //记录当前行号列号
char* tptr, *rptr;
int iskey;
FILE *fp, *ip;
int word_count=0, char_count=0;
main()
{
char jc;
char *important[11]={"void","if","then","else","int","float","char","double","return","for","while"}; //关键字
if((fp = fopen("write.txt","w"))==NULL){
printf("文件错误\n");
return 0;
}
if((ip = fopen("read.txt","r"))==NULL){
printf("文件错误\n");
return 0;
}
for(i=0; i<20; i++)
cc[i]=-1;
for(i=0; i<40; i++)
symbol[i]=NULL;
//Initial();
printf("正在分析read.txt程序代码,请打开write.txt查看结果:\n");
pre=-1; aft=-1;
readc();
// scanf("%c", &c);
while(!feof(ip)){
line++;
jc = judgec();
// word_count++;
switch(jc)
{
case '#':
if(line==1){
fprintf(fp,"#\t-\n"); //仅当#在某行第一列时认为是合法的
/* readc();
while(c!='\n'){
fprintf(fp,"%c", c);
readc();
}
fprintf(fp,"\n");
*/
}
else
error();
break;
case' ':
break;
case 1: //当读入为标识符
while((c>='a' && c <='z')||(c>='A' && c<='Z')|| c=='_'||(c>='0'&& c<='9')){
cat();
readc();
}
word_count++;
retract();
iskey=reserve(important);
if(iskey==0){
table_insert();
fprintf(fp,"id\t%d\n", (symbol_count-1));
}
else{
for(j=0; j<cc_count; j++)
fprintf(fp,"%c", cc[j]);
fprintf(fp,"\t-\n");
}
iskey=0;
clean();
break;
case 2: //当读入为数字0-9
fprintf(fp,"num\t");
word_count++;
DTB();
for(j=0; j<cc_count; j++)
fprintf(fp,"%c", cc[j]);
fprintf(fp,"\n");
clean();
break;
case '<':
readc();
if(c=='=')
fprintf(fp,"relop\tLE\n");
else if(c=='>')
fprintf(fp,"relop\tNE\n");
else{
retract();
fprintf(fp,"relop\tLT\n");
}
clean();
break;
case '=':
fprintf(fp,"relop\tEQ\n");
clean();
break;
case '>':
readc();
if(c=='=')
fprintf(fp,"relop\tGE\n");
else{
retract();
fprintf(fp,"relop\tGT\n");
}
clean();
break;
case ':':
readc();
if(c=='=')
fprintf(fp,"assign-op\t-\n");
retract();
fprintf(fp,"':'\t-\n");
clean();
break;
case ',':
fprintf(fp,"','\t-\n");
break;
case '+':
fprintf(fp,"'+'\t-\n");
break;
case '-':
fprintf(fp,"'-'\t-\n");
break;
case '.':
fprintf(fp,"'.'\t-\n");
break;
case '(':
fprintf(fp,"'('\t-\n");
break;
case ')':
fprintf(fp,"')'\t-\n");
break;
case ';':
fprintf(fp,"';'\t-\n");
break;
case '{':
fprintf(fp,"'{'\t-\n");
break;
case '}':
fprintf(fp,"'}'\t-\n");
break;
case '/': //分析并处理注释
readc();
if(c=='*'){
loop_1: readc();
while(c!='*')
{
readc();
char_count--;
}
readc();
if(c=='/'){
char_count = char_count-4;
break;
}
goto loop_1;
}
else{
retract();
fprintf(fp,"'/'\t-\n");
}
clean();
break;
case '\n':
row++;
line=0;
break;
default:
error(); //出错处理
}
readc();
}
fprintf(fp,"\n总字符数:%d\n", char_count);
fprintf(fp,"总单词书: %d\n", word_count);
fprintf(fp,"总行数:%d\n", row-1);
fclose(fp);
fclose(ip);
system("pause");
return 0;
}
void error(void)
{
fprintf(fp,"Error!!!!--row:%d, line:%d--错误是:%c\n", row, line, c);
}
void Initial(void)
{
//关键字初始化
// important[0] = malloc(sizeof(char)*10);
//important[0]='if'; //????????????????????????????????
//printf("%c", *(important[0]));
//others
}
//函数功能:完成读入字符
void readc(void){
if(aft!=-1){
c=aft; aft=-1;
}
else{
pre=c;
fscanf(ip,"%c", &c);
if(c!=' '&&c!='\n')
char_count++;
}
return;
}
//函数功能:把需要判断的输入字符连接起来
void cat(void)
{
cc[cc_count]=c;
cc_count++;
return;
}
//函数功能:向前扫描指针向后退一个字符
void retract(void)
{
aft=c;
c=pre;
return;
}
//函数功能:查看关键字表。
//返回值:0-非关键字 1-是关键字
int reserve(char *f[])
{
int m, n;
for(m = 0; m < 11; m++){
n = 0;
rptr = f[m];
for(; (*rptr)==cc[n]&& n<cc_count && (*rptr)!='\0'; rptr++, n++);
if((*rptr)=='\0' && n==cc_count)
return 1;
}
return 0;
}
//函数功能:将标识符插入符号表
void table_insert(void)
{
tptr = symbol[symbol_count];
tptr = malloc(sizeof(char)*20); //正规表达式不能超过20个字符
for(j=0; j<cc_count; j++, tptr++)
(*tptr)=cc[j];
symbol_count++;
return;
}
//函数功能:清空缓存
void clean(void)
{
for(i=0; i<20; i++)
cc[i] = -1;
cc_count=0;
return;
}
//函数功能:十/二进制转换
void DTB(void)
{
switch(c){
case '0':
cc[0]='0';
cc_count=1;
break;
case '1':
cc[0]='1';
cc_count=1;
break;
case '2':
cc[0]='0'; cc[1]='1';
cc_count=2;
break;
case '3':
cc[0]='1'; cc[1]='1';
cc_count=2;
break;
case '4':
cc[0]='0'; cc[1]='0'; cc[2]='1';
cc_count=3;
break;
case '5':
cc[0]='1'; cc[1]='0'; cc[2]='1';
cc_count=3;
break;
case '6':
cc[0]='0'; cc[1]='1'; cc[2]='1';
cc_count=3;
break;
case '7':
cc[0]='1'; cc[1]='1'; cc[2]='1';
cc_count=3;
break;
case '8':
cc[0]='0'; cc[1]='0'; cc[2]='0'; cc[3]='1';
cc_count=4;
break;
case '9':
cc[0]='1'; cc[1]='0'; cc[2]='0'; cc[3]='1';
cc_count=4;
break;
}
return;
}
//函数功能:辅助函数,帮助分离非符号字符。
char judgec(void)
{
if((c>='a' && c <='z')||(c>='A' && c<='Z')|| c=='_')
return 1;
if(c>='0'&& c<='9')
return 2;
else
return c;
}