您当前的位置:首页 > 互联网教程

C语言提取文件内容保存到字符串数组问题

发布时间:2025-05-11 22:12:25    发布人:远客网络

C语言提取文件内容保存到字符串数组问题

一、C语言提取文件内容保存到字符串数组问题

1.文件如果不是要读同时又要写的情况,用'r'属性打开就可以了;

2.while((fgets(&str[i],100,fp)!= NULL))应该写成while((fgets(str,100,fp)!= NULL))

原因:fgets是读取文件中的一整行数据放到第一个参数位置,

你第一行装入str+0位置,第二行放到str+1??这个没有道理呀,何况你下面还

3.我读你程序,似乎是要将文件中的所有单词全部读出,而且文件中每个单词占用一行,

象程序中的定义,你所有单词的字符串的字符个数不能超过1024个。

如果要将小于1024个单词读出来,需要统计一下最长单词的字符个数,比如我们假定是9,

那么我们程序中就可以定义数组了(每行单词字符加换行符加字符串结尾符有时还有回车符):

char world[1024][12],str[1024][12];

每次用fgets(str[i],10,fp)读进来,i可以从0开始,每单词加1,程序可以象下面设计:

#define PATH"/Users/SQZS/Desktop/word.txt"

char world[1024][12],str[1024][12];

for( i=0;i<nNumber;i++) printf("%s",str[i]);

else printf("不能打开文本文件'%s'.\n",PATH);

二、C语言字符串 按行读取

1、写了个代码,希望采纳,等分哦。这个代码还有问题,比如比较字符串后面还有多个6,比如一行数据多余1024,这些需要你自己动手实现。

2、记住把文件的绝对路径改成你自己的,我是在linux下写的。

3、#include<stdio.h>#include<string.h>#define bool int#define false 0#define true 1#define MAX_NUM 1025int main(int argc,char**argv){/*fileSrc是查找文件的绝对路径*/ const char*fileSrc="/home/xxx/workspace/c/xxx.text";/*fileSave是找到合适字符串后保存文件的绝对路径*/ const char*fileSave="/home/xxx/workspace/c/aaa.text"; const char*flagString="66666"; FILE*fp_src= NULL,*fp_save; char buf[MAX_NUM]={0}; bool flag= false; fp_src= fopen(fileSrc,"r"); if(fp_src== NULL) return-1; while(fgets(buf,sizeof(buf),fp_src)!= NULL){ printf("buf=%s",buf); if(flag== true){ fp_save= fopen(fileSave,"w+"); if(fp_save== NULL){ return-1;} fwrite(buf,1,sizeof(buf)-1,fp_save); fclose(fp_save); break;} if(0== memcmp(buf,flagString,strlen(flagString))){ flag= true;} memset(buf,0,sizeof(buf));} fclose(fp_src); return 0;}

三、c语言中怎样用scanf()读入带空格的字符串

1、在C语言编程中,当需要读入包含空格的字符串时,gets()函数已不再推荐使用。可以采用fgets()函数来替代,其语法为char str[100]; fgets(str, 100, stdin);。这里的stdin表示从标准输入设备(键盘)获取数据。读取的数据将被存储在str数组中。若需显示读取的内容,可以使用fputs(str, stdout);,其中stdout表示标准输出设备(屏幕)。

2、另一种方法是使用scanf()函数,其语法为char str[100]; scanf("%[^\n]", str);。这里,%[^\n]是一个格式说明符,表示读取直到遇到换行符(\n)为止的字符序列。读取的数据同样会存储在str数组中。读取完毕后,可以通过printf("%s\n", str);来输出数据。

3、在使用fgets()时,需要注意指定读取的最大字符数以避免缓冲区溢出。这里的100是str数组的大小,表示最多读取100个字符(包括空格)。而scanf()方法中的%[^\n]会自动处理换行符,但可能会导致在输入较长字符串时需要手动按回车键。

4、这两种方法各有优缺点。使用fgets()时,可以精确控制读取的字符数,避免意外的换行符影响。而scanf()则更为简洁,尤其是在需要从键盘输入多个字符串时。选择哪种方法取决于具体的应用场景和个人偏好。

5、无论是fgets()还是scanf(),在实际编程中都需要谨慎处理,确保输入的数据符合预期,以避免潜在的错误和安全风险。