c语言实现txt文件读取

VC编译器下c语言没有办法打开TXT文件。代码如下:#include

#include
void main()

{ FILE *fp;

if((fp=fopen("C:\Users\Administrator\Desktop\ad.txt","r"))==NULL)

{
printf("cannot open the file!");

exit(0);

}
else
printf("ok");
fclose(fp);
}

5个回答

斜杆错了,应该写成\,可以参考转意字符表

sinat_29094179
sinat_29094179 是\\,不好意思,我打错了
接近 5 年之前 回复

看errno的值
路径对吗

把路径改为这样试试:"C:\Users\Administrator\Desktop\ad.txt"

把路径改为这样试试:"C:/Users/Administrator/Desktop/ad.txt"

在字符串中\是表示转义,想要用\就要打两个\。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
C语言从txt文件查找字符串求助

txt文件内容如下: -------------------------------------- A->B hello everybody haha hehe B->A world is big A->B impossible is nothing B->A just do it 需求: 首先查找字符串hello,找到后提取其上一行字符串A->B,然后依次查找下一个A->B或者B->A(两个都可以),提取出其下一行第一个字符串,也就是world ,impossible ,just 然后把hello,world,impossible,just放到一个数组里。

如何用c语言读取excel文件

请问各路大神,如何用c语言读取excel文件中的内容,急、、、、、、

C语言,怎么实现从一个txt文件中读取一个int数字后输出,再读取文件中下一个int型数字?

假如txt文件内容为: 10,20,0..... 怎么实现读取10之后输出,再读取20输出,再读取0输出....直到文件结束?

c语言如何删除文本文件的内容,和读取指定文件夹里的文件?

具体来说,逐行读取部分的文件,读取其中部分数据,判断后决定是否删除本行数据,文件每天都在更新,想达到放入指定文件夹就可以读取并且删除部分不合格数据的功能,我是个c萌新,求大家帮个忙,谢谢!

c语言实现英文文本词频统计

c语言结课课程设计,希望有大佬可以指点一下小白 单词词频统计 设计内容: 写程序处理英语文本文件,统计文件中所出现的各单词在文本中出现的频次。 设计功能: 1、 将英文段落以文本文件,并在屏幕上显示。 2、 处理读入的文本文件,提取段落中的英文单词,并且统计各单词出现的次数。 3、 将各单词及其出现频次打印出来,并且将频次为前十的单词的频率用柱状图表示出来。 如果VC6.0环境不能画柱状图的话,就只需要把所有单词的出现频次打出来,再把前十的单词和频率输出就好。 求指电 跪求大佬帮助

c语言文件读取汉字及汉字编码的问题

先贴程序 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> using namespace std; int main(void) { char ch; FILE *f; int i = 0; int count = 0; f = fopen("test.txt", "r+"); while ((ch = getc(f)) != EOF) { fseek(f, i, SEEK_SET); putc(~ch, f); i++; fseek(f, i, SEEK_SET); count++; } fclose(f); printf("文件操作已经完成\n"); printf("共处理%d个字节\n", count); printf("按任意键结束程序\n"); getchar(); return 0; } 该程序实现的就是对文件内的字符进行取反,就是简单的加密,再取反一次就变回原样了,也就是解密 在对汉字进行操作的时候,我进行了一些字的实验,目前仅发现了一个王字,在取反后取反回去不能变成王字,我加了查看字符格式的代码,发现 王 这个字在进行第一次字符操作时候,被分解为三个字节!!!然后再操作,就变成了四个!进行一次加一次,但是其他的汉字目前没发现错误,不知道是怎么回事,难道王字的编码就是三个字节吗? 求大家解答一下,我是新人没有一个c币。。。如果以后我得到了,就追加给你,谢谢啦

C语言中,如何将读取的16进制txt文件转化为10进制数组?

我读取到的的16进制数 0, 0, 6b6, 6a5, 695, 685, 67e, 663, 662, 652, 648, 640, 62e, 628, 616, 612, 604, 5f7, 5ed, 5df,是这样的600个数据,我写的代码如下,可为什么转化的是错的,请大神们帮忙看一下。 #include<stdio.h> #include <ctype.h> #include<stdlib.h> #include <string.h> #include<math.h> #define N 600 int main() { char szTest[1000] = {0}; int len = 0; FILE *fp = fopen("data25.txt", "r"); if(NULL == fp) { printf("failed to open dos.txt\n"); return 1; } while(!feof(fp)) { memset(szTest, 0, sizeof(szTest)); fgets(szTest, sizeof(szTest) - 1, fp); // 包含了\n int t=strlen(szTest); long sum=0; for(int i=0;i<t;i++){ if(szTest[i]>='a' && szTest[i]<='z') szTest[i]=int(szTest[i]-'a')+10+'0'; sum+=((szTest[i]-'0')*(pow(16,t-1-i))); sum1[]=sum; } printf("%ld\n",sum); } fclose(fp); printf("\n"); return 0; } /*unsigned convert(char szTest[]) { unsigned i,num = 0; for(i = 0;szTest[i];++i) { szTest[i] = toupper(szTest[i]); //* 小写字母转换成大写,其他字符不变 * if(isalpha(szTest[i])) num += 16 * num + szTest[i] - 'A'; else num += 16 * num + szTest[i] - '0'; } return num; } */

C语言fopen打开文件失败

一个单链表创建学生信息的作业,要求要用文件的输入输出。 打全部路径会出现如图的错误。 打“C:\\\student_info.txt”也不行。 把文件移到project8的文件夹下面打“student_info.txt”也不行。 已确定文件在文件夹内是存在的。F11调试确定就是fopen那块儿出的问题 求问怎么改......崩溃 ![图片说明](https://img-ask.csdn.net/upload/201912/04/1575461393_230930.png) #define _CRT_SECURE_NO_DEPRECATE #include <stdio.h> #include <stdlib.h> #define OK 1 #define ERROR 0 #define OVERFLOW -2 typedef int ElemType; typedef int Status; FILE *fp; /*①单链表数据结构定义*/ typedef struct { int num; //学号 //char name[20]; //姓名 //int sex; //性别 //int dorm; //宿舍 //int tel; //电话 }Student; //结点定义 typedef struct LNode { Student data; struct LNode *next; }LNode; //链表定义 typedef struct { LNode* head; //指向头结点的指针 int length; //链表长度 }LinkList; /*②单链表基本操作接口定义*/ //初始化链表:创建头结点,给L字段赋初值 //返回一个空的单链表 Status InitList(LinkList &L); //初始条件:线性表L已经初始化 //采用头插法创建一个单链表,元素类型为整形,输入-9999时结束 Status CreateFromHead(LinkList &L); //初始条件:线性表L已经初始化 //采用尾插法创建一个单链表,元素类型为整形,输入-9999时结束 Status CreateFromTail(LinkList &L); //初始条件:线性表L已经存在 //打印出所有元素 void PrintElem(LinkList L); //初始条件:线性表L已经存在 //查找第i个结点,若找到(1≤i≤n),则由e返回其值 Status GetElem_L(LinkList L, int i, ElemType &e); //初始条件:线性表L已经存在 //在单链线性表L的第i个元素之前插入元素e Status ListInsert_L(LinkList &L, int i, ElemType e); //初始条件:线性表L已经存在 //删除第i个元素,并由e返回其值 Status ListDelete_L(LinkList &L, int i, ElemType &e); int main() { LinkList L; InitList(L); CreateFromHead(L); PrintElem(L); system("pause"); } /*③部分单链表操作的实现函数*/ Status InitList(LinkList &L) //初始化链表 { L.head = (LNode*)malloc(sizeof(LNode)); if (!L.head)exit(OVERFLOW); L.length = 0; L.head->next = NULL; return OK; } //初始条件:线性表L已经初始化 //采用头插法创建一个单链表,元素类型为整形,输入-9999时结束 Status CreateFromHead(LinkList &L) { LNode *s; int flag = 1; int e; L.head = (LNode*)malloc(sizeof(LNode)); L.head->next = NULL; while (flag) { fp = fopen("C:\Users\解诗雨\source\student_info.txt", "r+"); if (fp==NULL) { printf("打不开\n"); return OK; } fscanf(fp,"%d", &e); if (e) { s = (LNode*)malloc(sizeof(LNode)); s->data.num = e; s->next = L.head->next; L.head->next = s; ++L.length; } else flag = 0; fclose(fp); } return OK; } //初始条件:线性表L已经存在 //打印出所有元素 void PrintElem(LinkList L) { LNode* p; p = L.head->next; printf("当前的结点数为:%d\n", L.length); while (p) { printf("%4d ", p->data.num); p = p->next; } printf("\n"); } 文本: ![图片说明](https://img-ask.csdn.net/upload/201912/04/1575462569_672809.png) 因为现在还在创建链表其他还没弄完...

关于c语言从文件中读取学生信息,处理并打印

![图片说明](https://img-ask.csdn.net/upload/201712/07/1512617928_774992.png) b) 建议函数流程: i. 打开数据文件,失败返回-1; ii. 从头到尾扫描数据文件(即预读一遍)获得学生人数; iii. 根据学生人数,利用malloc和sizeof等函数或运算符为struct student** pStudents分配内存; iv. 利用rewind函数,定位到文件头; v. 读取数据文件,并把每一条记录通过数组下标法或指针法保存到结构体数组pStudents中; vi. 关闭文件; vii. 返回学生人数。 c) 数据文件格式说明: 一行一条学生信息的记录,不同属性用空格隔开,输入数据中无总成绩记录,例如: 张三 通信 89 93 95 李四 网络 88 91 94 王五 物联网 71 94 88 3. 编写统计函数: a) 函数定义void Count(struct student pStudents[], int num)。输入参数分别为保存学生的结构体数组和学生人数。 b) 功能为:统计所有学生的总成绩和每个专业(假定一共三个专业:通信,网络,物联网)的平均成绩;输入参数包括学生信息结构体数组,学生人数,返回的每个学生的总成绩直接填充到对应的输入结构体数组对应字段中。统计信息包括三个专业的总人数、平均成绩数组,用全局变量来表示。访问每个学生信息的时候,用指针来指向当前正在处理的学生。 c) 设计一个或者三个带参数的宏,判断输入的字符串是否是指定的专业名称,并在函数Count中使用。 5. 编写main函数实现: a) 定义变量,其中保存学生信息的数据文件直接在源代码中初始化; b) 读取学生信息,如果失败,打印失败信息并退出程序; c) 统计学生信息; d) 输出统计信息。 e) 释放内存。 ``` #include <stdio.h> #include <stdlib.h> #include <string.h> struct student{ char name[15]; char major[15]; int Eng_sco; int cal_sco; int c_sco; int sum; }; int tx_per=0,tx_ave,tx_sum=0; int wl_per=0,wl_ave,wl_sum=0; int wlw_per=0,wlw_ave,wlw_sum=0; int ReadStudentInfo(const char* filename, struct student** pStudents); void Count(struct student pStudents[], int num); int main() { int count; int m; struct student *list; count=ReadStudentInfo("readme.txt", &list); printf("学生信息: \n"); printf("----------------------------------------------------\n"); printf("序号 姓 名 专业名称 英语成绩 线性代数成绩 c语言成绩 总成绩\n"); for(m=1;m<=count;m++) { printf("%4d %s %s %4d %4d %4d %4d\n",m,(list+m-1)->name,(list+m-1)->major,(list+m-1)->Eng_sco,(list+m-1)->cal_sco,(list+m-1)->c_sco,(list+m-1)->sum); } Count(list, count); printf("\n统计信息 :\n"); printf("----------------------------------------------------\n"); printf("序号 专业名称 学生人数 平均成绩\n"); printf(" 1 通信 %d %d\n",tx_per,tx_ave); printf(" 2 网络 %d %d\n",wl_per,wl_ave); printf(" 3 物联网 %d %d\n",wlw_per,wlw_ave); return 0; } int ReadStudentInfo(const char* filename, struct student** pStudents) { FILE *fp; char ch; int i=1,j; fp=fopen(readme.txt,"r"); if(fp==NULL) { printf("cann't open the file"); exit(-1); } ch=fgetc(fp); while(ch!=EOF) { if(ch=='\n') { i++; } ch=fgetc(fp); } rewind(fp); *pStudents=(struct student*)malloc(sizeof(** pStudents)*i); for(j=0;j<i;j++) { fread(&*pStudents[j],sizeof(struct student)-sizeof(int),1,fp); (*pStudents+j)->sum=((*pStudents+j)->Eng_sco+(*pStudents+j)->cal_sco+(*pStudents+j)->c_sco); } fclose(fp); return i; } void Count(struct student pStudents[], int num) { int n=1; for(n=1;n<=num;n++) { if(!strcmp((pStudents+n-1)->major,"通信")) { tx_per++; tx_sum=tx_sum+(pStudents+n-1)->sum; } if(!strcmp((pStudents+n-1)->major,"网络")) { wl_per++; wl_sum=wl_sum+(pStudents+n-1)->sum; } if(!strcmp((pStudents+n-1)->major,"物联网")) { wlw_per++; wlw_sum=wlw_sum+(pStudents+n-1)->sum; } tx_ave=tx_sum/tx_per; wl_ave=wl_sum/wl_per; wlw_ave=wlw_sum/wlw_per; } free(pStudents); } ``` 运行不起来,是哪里出问题了?

C语言:替换文件中的字符串

``` #include<stdio.h> #include<stdlib.h> #include<string.h> void replace(char *path,char *str,char *newstr); int main(int argc,char *argv[]) { if (strcmp(argv[1], "replace") == 0) replace(argv[2],argv[3],argv[4]); return 0; } void replace(char *path,char *str,char *newstr) { FILE *fp; fp=fopen(path,"rb+"); char temp[20]; fscanf(fp,"%s",temp); while(!feof(fp)) { long size=strlen(temp); if(strcmp(temp,str)==0) { strcpy(temp,newstr); fseek(fp,-size,SEEK_CUR); fprintf(fp,"%s",temp); } char temp[20]={0}; fscanf(fp,"%s",temp); } fclose(fp); } ``` 要想实现将文本文件中的str替换成newstr,请问上述代码哪里有问题

关于C语言按行读取文件,读取其中数字,挨个转换成doube类型,存入数组

int main() { FILE *fp; char buffer[50]; char filename[50]; int bufferLen; int i; int j = 0; char c; double c_number[50]; printf("Input file name: "); scanf("%s", filename); if((fp = fopen(filename, "rb")) == NULL) { return -1; } while(fgets(buffer, 50, fp)) { for(i = 0; i < 50; i++) { c = buffer[i]; if(c != ' ' && c != '\n' && c != '\r') //这里过滤,读取数字,文件有符号,空格什么的 { c_number[j] = (double)atof(c); //这里想挨个转换double没有成功 //sscanf(c, "%lf", c_number[j]); j++; } } } fclose(fp);

c语言 大量数据在写入文件时会崩溃 急求问题所在和解决办法

想实现的功能是建立一堆文本文件的索引,但是现在已经成功创建了一个索引表,但把索引表存入文件的时候就会进行到一半然后崩溃 需要在目录下创建一个book文件夹储存信息 现在的问题 信息太多时候写入最后save_index 崩溃 释放内存好像不行 代码如下 头文件 ``` #ifndef Searchengine_H #define Searchengine_H #include <stdio.h> #include <windows.h> #include<stdlib.h> struct word_place //保存单词的地址 { int book_id; char book_name[30]; long int location; }; typedef struct word_place place; typedef struct key* key_node; struct key //为每个关键词创造一个节点 { int id; char key[20]; int find_number; place *places; }; key_node key_information[1000000]; struct file_inf //搜索文件的序号 { int number; char name[100]; }file_information[10000]; void find(char * lpPath); int find_word(char* word); void add_key(char* word,int num,long int place) ; int is_letter(char c) ; void index_a_book(int num) ; void kuaipai(int left,int right,key_node a[]) ; void save_index(int x); #endif ``` 遍历文件夹获取文件信息的文件 ``` #include"search_engine.h" void find(char * lpPath) //读取一个文件夹的文件名 { int i=0; char szFind[MAX_PATH],szFile[MAX_PATH]; WIN32_FIND_DATA FindFileData; HANDLE hFind; strcpy(szFind,lpPath); strcat(szFind,"\\*.*"); hFind = FindFirstFile(szFind,&FindFileData); if(INVALID_HANDLE_VALUE == hFind) return; while(TRUE) { if(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) { if(FindFileData.cFileName[0]!='.') { strcpy(szFile,lpPath); strcat(szFile,"\\"); strcat(szFile,FindFileData.cFileName); find(szFile); } } else { // printf("%s\n",FindFileData.cFileName); file_information[i].number=i; strcpy(file_information[i].name,FindFileData.cFileName); i++; } if(!FindNextFile(hFind,&FindFileData)) { file_information[i].name[0]='\0'; break; } } } void save_filenum()//储存文件序列 { int i=0; FILE *fp; if((fp=fopen("book index.txt","r+"))==NULL) {printf("open error\n"); exit(0); } char* is_write="0"; fscanf(fp,"%s",&is_write); printf("%c\n",is_write); if (is_write=='0') fclose(fp); else { is_write="1"; fseek(fp,0,0); fprintf(fp,"%s\n",is_write); } for(i=0;file_information[i].name[0];i++) { fprintf(fp,"%d ",file_information[i].number); fprintf(fp,"%s\n",file_information[i].name); } fclose(fp); } ``` 创建和储存索引的函数 ``` #include"search_engine.h" int find_word(char* word) //判断是否为已有的关键词 { int i; for(i=0;key_information[i];i++) { if(strcmp(key_information[i]->key,word)==0) break; } return i; }//少一个储存查找的算法 void add_key(char* word,int num,long int place) //把关键词添加到索引中 { int i=find_word(word); if(!key_information[i]) { key_information[i]=(key_node)malloc(sizeof(struct key)); strcpy(key_information[i]->key,word); key_information[i]->find_number=1; key_information[i]->places=(struct word_place*)malloc(100*sizeof(struct word_place)) ; } else key_information[i]->find_number++; int temp=key_information[i]->find_number-1; if(temp%98==0) key_information[i]->places=(struct word_place*)realloc(key_information[i]->places,(temp+100)*sizeof(struct word_place)); strcpy(key_information[i]->places[temp].book_name,file_information[num].name); key_information[i]->places[temp].book_id=num; key_information[i]->places[temp].location=place; } int is_letter(char c) //判断一个字符是否是特殊字符 { if(c >='0' && c<='9') return 1; else if(c >='a' && c<='z' || c >='A' && c<='Z') return 2; else return 0; } void index_a_book(int num) //为一本书中的单词建立索引 { FILE *fp; char* name=file_information[num].name; char way[100]="book\\"; strcat(way,name); printf("%s\n",way); if((fp=fopen(way,"r+"))==NULL) {printf("open error\n"); exit(0); } char* read; read=(char*)malloc(sizeof(char)*100); long int place=0; fseek(fp,0L,SEEK_SET); while(!feof(fp)) { fscanf(fp,"%s",read); if(is_letter(read[strlen(read)-1])==0) read[strlen(read)-1]=0; if(is_letter(read[0])==2)//首为必须为字母 { printf("%s\n",read); add_key(read,num,place); place++; } } fclose(fp); } void kuaipai(int left,int right,key_node a[]) //对列表快速排序 { int i,j; char* middle; key_node temp; i=left; j=right; middle=a[(i+j)/2]->key; do{ while(strcmp(a[i]->key,middle)<0&&i<right) i++; while(strcmp(a[j]->key,middle)>0&&j>left) j--; if(i<=j) { temp=a[i],a[i]=a[j],a[j]=temp; j--; i++; } }while(i<=j); if(left<j) kuaipai(left,j,a); if(right>i) kuaipai(i,right,a); } void save_index(int x)//储存索引 { FILE *fp; if((fp=fopen("word index.txt","w+"))==NULL) {printf("open error\n"); exit(0); } printf("open success\n"); printf("%d",x); int i,j; fprintf(fp,"%d\n",x); i=0; printf("%d %s %d \n",i,key_information[i]->key,key_information[i]->find_number); printf("%c %d",key_information[i]->key[0],is_letter(key_information[i]->key[0])); fprintf(fp,"%d %s %d ",i,key_information[i]->key,key_information[i]->find_number); /* for(i=0;i<100;i++) { fprintf(fp,"%d %s %d ",i,key_information[i]->key,key_information[i]->find_number); for(j=0;j<key_information[i]->find_number;j++) { fprintf(fp,"%d %d ",key_information[i]->places[j].book_id,key_information[i]->places[j].location); } fprintf(fp,"ok\n"); }*/ fclose(fp); } ``` 主函数 ``` #include"search_engine.h" //void add index() int main() { char filepath[MAX_PATH]="book"; //可自己输入文件夹绝对路径 find(filepath); int i=0; /* for(i=0;file_information[i].name[0];i++) { printf("%d %s\n",file_information[i].number,file_information[i].name); }*/ save_filenum(); for(i=0;file_information[i].name[0];i++) { index_a_book(i); } /*for(i=0;key_information[i];i++) { printf("%s\n",key_information[i]->key); } printf("%s\n",key_information[1]->places[0].book_name);*/ int word_num; for(i=0;key_information[i];i++) ; word_num=i-1; kuaipai(0,word_num,key_information); printf("ok\n"); save_index(word_num); system("PAUSE"); for(i=0;key_information[i];i++) { free(key_information[i]); } return 0; } ``` 很急,求大佬解答

数据结构C语言里二叉树和N叉数的综合运用问题,怎么从文件读取二叉树

Problem Description Today CodeFamer is going to cut trees.There are N trees standing in a line. They are numbered from 1 to N. The tree numbered i has height hi. We say that two uncutted trees whose numbers are x and y are in the same block if and only if they are fitting in one of blow rules: 1)x+1=y or y+1=x; 2)there exists an uncutted tree which is numbered z, and x is in the same block with z, while y is also in the same block with z. Now CodeFamer want to cut some trees whose height is not larger than some value, after those trees are cut, how many tree blocks are there? Input Multi test cases (about 15). For each case, first line contains two integers N and&#160;Q separated by exactly one space, N indicates there are N trees, Q indicates there are Q queries. In the following N lines, there will appear h[1],h[2],h[3],…,h[N] which indicates the height of the trees. In the following Q lines, there will appear q[1],q[2],q[3],…,q[Q] which indicates CodeFamer’s queries. Please process to the end of file. [Technical Specification] 1≤N,Q≤50000 0≤h[i]≤1000000000(109) 0≤q[i]≤1000000000(109) Output For each q[i], output the number of tree block after CodeFamer cut the trees whose height are not larger than q[i]. Sample Input 3 2 5 2 3 6 2 Sample Output 0 2

读取文本文件并且统计给定文本文件中汉字的个数,怎么利用C语言的程序编程的方式来实现的?

Problem Description 统计给定文本文件中汉字的个数。 Input 输入文件首先包含一个整数n,表示测试实例的个数,然后是n段文本。 Output 对于每一段文本,输出其中的汉字的个数,每个测试实例的输出占一行。 [Hint:]从汉字机内码的特点考虑~ Sample Input 2 WaHaHa! WaHaHa! 今年过节不说话要说只说普通话WaHaHa! WaHaHa! 马上就要期末考试了Are you ready? Sample Output 14 9

c语言怎样调用文本文件里面的数据。

如果我要做一个通讯录一样的文件,需要将每个用户的信息用结构体存在一个文本文件里面,当我要查询,添加或删除用户时,需要调用这个文本文件里面的数据,应该怎样实现调用信息?最好能够具体到具体的某个数,比如说我需要调用student[i].number这样具体的数值。

c语言单线程开启多个定时器,同时去读写同一个文件,需要加锁吗?定时器原理?

同一线程,但是有多个定时器,假设有好多定时器,那么理论上会有多个定时器几乎同时到时,这种情况,操作系统怎么处理,是肯定等待目前这个定时器执行结束才去执行下一个定时器还是怎么样?

QT中如何读取一个txt文件,并将txt文件的值依次导入数组,以下是Vb代码,求QT实现,谢谢!

If Dir(App.Path & "\userdata\BP网络连接权值1.txt") <> "" Then filenum = FreeFile Open App.Path & "\userdata\BP网络连接权值1.txt" For Input As filenum Do Until EOF(filenum) For j = 1 To midlayer_notes For i = 1 To inlayer_notes Input #filenum, imw(j, i) Next i Next j Loop Close #filenum

C语言 关于读文件及如何实现输入文件中已存在的信息则不允许被添加

我写的一个关于添加书籍信息的函数,但实现不了(若书名已经存在,则不允许添加该信息。)这个条件,求问大神是哪里的问题 #include<stdio.h> #include<stdlib.h> #include<string.h> typedef struct book { char book_name[20]; char book_writer[10]; char publisher[30]; char publishdate[10]; int price; int quantity; int stock; }BOOK; void insert_Book() { FILE *fp; int n=0; BOOK bk; while(n==0) { printf("\n请输入新书信息...\n包括书名.作者.出版商.出版日期.价格\n"); printf("书名:\n"); scanf("%s",bk.book_name); printf("作者:\n"); scanf("%s",bk.book_writer); printf("出版商:\n"); scanf("%s",bk.publisher); printf("出版日期:\n"); scanf("%s",bk.publishdate); printf("价格:\n"); scanf("%d",&bk.price); bk.stock=0; printf("\n请选择(1:确定\t2:取消\t0:重新输入):"); scanf("%d",&n); } if(n==1) { if((fp=fopen("bookinfo.txt","a"))==NULL) { printf("无法打开文件!"); return; } fprintf(fp,"%s %s %s %s %d %d\n",bk.book_name,bk.book_writer,bk.publisher,bk.publishdate,bk.price,bk.stock); fclose(fp); } system("CLS"); printf("输入成功!\n"); printf("请选择(1:返回主界面\t2:输入另一本图书信息\t0:退出系统):\n"); scanf("%d",&n); switch(n) { case 1:system("CLS");break; case 2:system("CLS"); smcf(); break; case 0:break; default:printf("无此操作,按任意键返回\n"); system("CLS"); break; } } int smcf()//书名重复的情况 { char filename[20]="C:\\bookinfo.txt"; //存放书籍信息的文件 FILE * in; char c,d; char name[20]={0}; //存放输入的书籍名称 BOOK book,tmp; int i=0; printf("请输入书籍名称:"); d=getchar(); while((c=getchar())!='\n') { if(i>=20) { printf("书籍名称超过了20个字符,无法查询!\n"); return; } name[i++]=c; } if((in=fopen(filename,"r"))==NULL)//以只读方式打开文件 { printf("文件%s无法打开,查询失败!\n",filename); return; } i=0; while(!feof(in)) { fscanf(in,"%s\n",book.book_name);//存入书籍信息 if(ferror(in)) { printf("文件读取错误,查询失败!\n"); clearerr(in); return; } else//读取成功 { if(strcmp(name,book.book_name)==0)//若输入的书籍名称与读出的书籍信息中的书籍名称相同 { printf("书名已存在!不允许添加该信息!"); exit(0); } else { insert_Book(); } } } fclose(in); return; } int main() { insert_Book(); return 0; } ``` ```

c语言以二进制读取图片问题

小弟新手刚学数字图像处理,现在需要做一个模板卷积 程序编完了 但是对图片的处理总是不对 我把图片不做模板卷积只是读进去在存出来,发现图片已经变化了。 但是查了很久fread函数和fwrite函数,不知道哪里错了 大神们求拯救帮忙看看 程序很简单 define的想法就是用一维数组表示二维数组 #include <iostream> using namespace std; #define Twoto1(i,j,w) i*w+j void createimage(unsigned char *&img, int w, int h) {img = new unsigned char[w*h];} void delateimage(unsigned char*img) {delete []img;} void readimage(unsigned char*img, int w, int h, char *fname) { FILE *fp; fopen_s(&fp,fname, "rb"); if (fp == NULL){ cout << "error" << endl; return; } size_t result; result=fread(img , sizeof(unsigned char), w*h, fp); if (result != w*h) { cout << "Reading error" << endl; return; } else cout << "Reading Ok!" << endl; fclose(fp); } void mobanjuanji(unsigned char *image, unsigned char*image1, int w, int h, float moban[5][5]) { for (int i = 0; i<w; i++) for (int j = 0; j<h; j++) if (i<2 || j<2 || i>w - 3 || j>h - 3) image1[Twoto1(i,j,w)] = 0; else { float temp = 0; for (int m = 0; m<5; m++) for (int n = 0; n<5; n++) { temp += (image[Twoto1(i-2+m,j-2+n,w)]* moban[m][n]); } if (temp>255) image1[Twoto1(i, j, w)] = 255; else if (temp<0) image1[Twoto1(i, j, w)] = 0; else image1[Twoto1(i, j, w)] = temp; } } void saveimage(unsigned char *img, int w, int h, char *fname) { FILE *fp; fopen_s(&fp, fname, "wb"); if (fp == NULL) { cout << "error" << endl; return; } size_t result; result = fwrite(img, sizeof(unsigned char), w*h, fp); if (result != w*h) { cout << "Write error" << endl; return; } else cout << "Write Ok!" << endl; fclose(fp); } void main() { unsigned char *img; unsigned char *img1; float moban[5][5] = { {0,0,0,0,0},{0, -1, 0, 1, 0 }, { 0, -2, 0, 2, 0 }, { 0, -1, 0, 1, 0 }, { 0,0,0,0,0 } }; //float moban[5][5] = { 0 }; int w = 512, h = 512; createimage(img, w, h); createimage(img1, w, h); readimage(img, w, h, "E:\\ss.raw"); mobanjuanji(img, img1,w, h, moban); saveimage(img, w, h, "E:\\ss_1.raw"); saveimage(img1, w, h, "E:\\ss_2.raw"); delateimage(img); delateimage(img1); } ![原图](https://img-ask.csdn.net/upload/201605/07/1462633885_382405.jpg) ![直接读取不做卷积直接输出得到的图片](https://img-ask.csdn.net/upload/201605/07/1462633919_570906.png) ![做卷积得到的图片](https://img-ask.csdn.net/upload/201605/07/1462633958_817522.png) 第一张是原图 第二张是直接读进去不作处理存出来 第三张是做卷积过后 可以看到貌似不做处理直接读出来 图片也是和原来不一样了- - 求帮忙看看呀 谢谢大家

在中国程序员是青春饭吗?

今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...

程序员请照顾好自己,周末病魔差点一套带走我。

程序员在一个周末的时间,得了重病,差点当场去世,还好及时挽救回来了。

我以为我学懂了数据结构,直到看了这个导图才发现,我错了

数据结构与算法思维导图

String s = new String(" a ") 到底产生几个对象?

老生常谈的一个梗,到2020了还在争论,你们一天天的,哎哎哎,我不是针对你一个,我是说在座的各位都是人才! 上图红色的这3个箭头,对于通过new产生一个字符串(”宜春”)时,会先去常量池中查找是否已经有了”宜春”对象,如果没有则在常量池中创建一个此字符串对象,然后堆中再创建一个常量池中此”宜春”对象的拷贝对象。 也就是说准确答案是产生了一个或两个对象,如果常量池中原来没有 ”宜春” ,就是两个。...

技术大佬:我去,你写的 switch 语句也太老土了吧

昨天早上通过远程的方式 review 了两名新来同事的代码,大部分代码都写得很漂亮,严谨的同时注释也很到位,这令我非常满意。但当我看到他们当中有一个人写的 switch 语句时,还是忍不住破口大骂:“我擦,小王,你丫写的 switch 语句也太老土了吧!” 来看看小王写的代码吧,看完不要骂我装逼啊。 private static String createPlayer(PlayerTypes p...

Linux面试题(2020最新版)

文章目录Linux 概述什么是LinuxUnix和Linux有什么区别?什么是 Linux 内核?Linux的基本组件是什么?Linux 的体系结构BASH和DOS之间的基本区别是什么?Linux 开机启动过程?Linux系统缺省的运行级别?Linux 使用的进程间通信方式?Linux 有哪些系统日志文件?Linux系统安装多个桌面环境有帮助吗?什么是交换空间?什么是root帐户什么是LILO?什...

将一个接口响应时间从2s优化到 200ms以内的一个案例

一、背景 在开发联调阶段发现一个接口的响应时间特别长,经常超时,囧… 本文讲讲是如何定位到性能瓶颈以及修改的思路,将该接口从 2 s 左右优化到 200ms 以内 。 二、步骤 2.1 定位 定位性能瓶颈有两个思路,一个是通过工具去监控,一个是通过经验去猜想。 2.1.1 工具监控 就工具而言,推荐使用 arthas ,用到的是 trace 命令 具体安装步骤很简单,大家自行研究。 我的使用步骤是...

学历低,无法胜任工作,大佬告诉你应该怎么做

微信上收到一位读者小涛的留言,大致的意思是自己只有高中学历,经过培训后找到了一份工作,但很难胜任,考虑要不要辞职找一份他能力可以胜任的实习工作。下面是他留言的一部分内容: 二哥,我是 2016 年高中毕业的,考上了大学但没去成,主要是因为当时家里经济条件不太允许。 打工了三年后想学一门技术,就去培训了。培训的学校比较垃圾,现在非常后悔没去正规一点的机构培训。 去年 11 月份来北京找到了一份工...

JVM内存结构和Java内存模型别再傻傻分不清了

JVM内存结构和Java内存模型都是面试的热点问题,名字看感觉都差不多,网上有些博客也都把这两个概念混着用,实际上他们之间差别还是挺大的。 通俗点说,JVM内存结构是与JVM的内部存储结构相关,而Java内存模型是与多线程编程相关,本文针对这两个总是被混用的概念展开讲解。 JVM内存结构 JVM构成 说到JVM内存结构,就不会只是说内存结构的5个分区,而是会延展到整个JVM相关的问题,所以先了解下

和黑客斗争的 6 天!

互联网公司工作,很难避免不和黑客们打交道,我呆过的两家互联网公司,几乎每月每天每分钟都有黑客在公司网站上扫描。有的是寻找 Sql 注入的缺口,有的是寻找线上服务器可能存在的漏洞,大部分都...

Google 与微软的浏览器之争

浏览器再现“神仙打架”。整理 | 屠敏头图 | CSDN 下载自东方 IC出品 | CSDN(ID:CSDNnews)从 IE 到 Chrome,再从 Chrome 到 Edge,微软与...

讲一个程序员如何副业月赚三万的真实故事

loonggg读完需要3分钟速读仅需 1 分钟大家好,我是你们的校长。我之前讲过,这年头,只要肯动脑,肯行动,程序员凭借自己的技术,赚钱的方式还是有很多种的。仅仅靠在公司出卖自己的劳动时...

上班一个月,后悔当初着急入职的选择了

最近有个老铁,告诉我说,上班一个月,后悔当初着急入职现在公司了。他之前在美图做手机研发,今年美图那边今年也有一波组织优化调整,他是其中一个,在协商离职后,当时捉急找工作上班,因为有房贷供着,不能没有收入来源。所以匆忙选了一家公司,实际上是一个大型外包公司,主要派遣给其他手机厂商做外包项目。**当时承诺待遇还不错,所以就立马入职去上班了。但是后面入职后,发现薪酬待遇这块并不是HR所说那样,那个HR自...

女程序员,为什么比男程序员少???

昨天看到一档综艺节目,讨论了两个话题:(1)中国学生的数学成绩,平均下来看,会比国外好?为什么?(2)男生的数学成绩,平均下来看,会比女生好?为什么?同时,我又联想到了一个技术圈经常讨...

搜狗输入法也在挑战国人的智商!

故事总是一个接着一个到来...上周写完《鲁大师已经彻底沦为一款垃圾流氓软件!》这篇文章之后,鲁大师的市场工作人员就找到了我,希望把这篇文章删除掉。经过一番沟通我先把这篇文章从公号中删除了...

85后蒋凡:28岁实现财务自由、34岁成为阿里万亿电商帝国双掌门,他的人生底层逻辑是什么?...

蒋凡是何许人也? 2017年12月27日,在入职4年时间里,蒋凡开挂般坐上了淘宝总裁位置。 为此,时任阿里CEO张勇在任命书中力赞: 蒋凡加入阿里,始终保持创业者的冲劲,有敏锐的...

总结了 150 余个神奇网站,你不来瞅瞅吗?

原博客再更新,可能就没了,之后将持续更新本篇博客。

副业收入是我做程序媛的3倍,工作外的B面人生是怎样的?

提到“程序员”,多数人脑海里首先想到的大约是:为人木讷、薪水超高、工作枯燥…… 然而,当离开工作岗位,撕去层层标签,脱下“程序员”这身外套,有的人生动又有趣,马上展现出了完全不同的A/B面人生! 不论是简单的爱好,还是正经的副业,他们都干得同样出色。偶尔,还能和程序员的特质结合,产生奇妙的“化学反应”。 @Charlotte:平日素颜示人,周末美妆博主 大家都以为程序媛也个个不修边幅,但我们也许...

MySQL数据库面试题(2020最新版)

文章目录数据库基础知识为什么要使用数据库什么是SQL?什么是MySQL?数据库三大范式是什么mysql有关权限的表都有哪几个MySQL的binlog有有几种录入格式?分别有什么区别?数据类型mysql有哪些数据类型引擎MySQL存储引擎MyISAM与InnoDB区别MyISAM索引与InnoDB索引的区别?InnoDB引擎的4大特性存储引擎选择索引什么是索引?索引有哪些优缺点?索引使用场景(重点)...

如果你是老板,你会不会踢了这样的员工?

有个好朋友ZS,是技术总监,昨天问我:“有一个老下属,跟了我很多年,做事勤勤恳恳,主动性也很好。但随着公司的发展,他的进步速度,跟不上团队的步伐了,有点...

我入职阿里后,才知道原来简历这么写

私下里,有不少读者问我:“二哥,如何才能写出一份专业的技术简历呢?我总感觉自己写的简历太烂了,所以投了无数份,都石沉大海了。”说实话,我自己好多年没有写过简历了,但我认识的一个同行,他在阿里,给我说了一些他当年写简历的方法论,我感觉太牛逼了,实在是忍不住,就分享了出来,希望能够帮助到你。 01、简历的本质 作为简历的撰写者,你必须要搞清楚一点,简历的本质是什么,它就是为了来销售你的价值主张的。往深...

离职半年了,老东家又发 offer,回不回?

有小伙伴问松哥这个问题,他在上海某公司,在离职了几个月后,前公司的领导联系到他,希望他能够返聘回去,他很纠结要不要回去? 俗话说好马不吃回头草,但是这个小伙伴既然感到纠结了,我觉得至少说明了两个问题:1.曾经的公司还不错;2.现在的日子也不是很如意。否则应该就不会纠结了。 老实说,松哥之前也有过类似的经历,今天就来和小伙伴们聊聊回头草到底吃不吃。 首先一个基本观点,就是离职了也没必要和老东家弄的苦...

男生更看重女生的身材脸蛋,还是思想?

往往,我们看不进去大段大段的逻辑。深刻的哲理,往往短而精悍,一阵见血。问:产品经理挺漂亮的,有点心动,但不知道合不合得来。男生更看重女生的身材脸蛋,还是...

什么时候跳槽,为什么离职,你想好了么?

都是出来打工的,多为自己着想

程序员为什么千万不要瞎努力?

本文作者用对比非常鲜明的两个开发团队的故事,讲解了敏捷开发之道 —— 如果你的团队缺乏统一标准的环境,那么即使勤劳努力,不仅会极其耗时而且成果甚微,使用...

为什么程序员做外包会被瞧不起?

二哥,有个事想询问下您的意见,您觉得应届生值得去外包吗?公司虽然挺大的,中xx,但待遇感觉挺低,马上要报到,挺纠结的。

当HR压你价,说你只值7K,你该怎么回答?

当HR压你价,说你只值7K时,你可以流畅地回答,记住,是流畅,不能犹豫。 礼貌地说:“7K是吗?了解了。嗯~其实我对贵司的面试官印象很好。只不过,现在我的手头上已经有一份11K的offer。来面试,主要也是自己对贵司挺有兴趣的,所以过来看看……”(未完) 这段话主要是陪HR互诈的同时,从公司兴趣,公司职员印象上,都给予对方正面的肯定,既能提升HR的好感度,又能让谈判气氛融洽,为后面的发挥留足空间。...

面试:第十六章:Java中级开发(16k)

HashMap底层实现原理,红黑树,B+树,B树的结构原理 Spring的AOP和IOC是什么?它们常见的使用场景有哪些?Spring事务,事务的属性,传播行为,数据库隔离级别 Spring和SpringMVC,MyBatis以及SpringBoot的注解分别有哪些?SpringMVC的工作原理,SpringBoot框架的优点,MyBatis框架的优点 SpringCould组件有哪些,他们...

面试阿里p7,被按在地上摩擦,鬼知道我经历了什么?

面试阿里p7被问到的问题(当时我只知道第一个):@Conditional是做什么的?@Conditional多个条件是什么逻辑关系?条件判断在什么时候执...

终于懂了TCP和UDP协议区别

终于懂了TCP和UDP协议区别

立即提问
相关内容推荐