C语言如何将文件中一行内容按照空格分割,并将每个单词写入数组? C语言如何将文件中一行内容按照空格分割,并将每个单词写入数组...

C\u8bed\u8a00 \u6570\u7ec4 \u8f93\u5165\u4e00\u884c\u6587\u5b57,\u8981\u6c42\u5c06\u6bcf\u4e2a\u5355\u8bcd\u7684\u9996\u5b57\u6bcd\u7531\u5c0f\u5199\u6539\u4e3a\u5927\u5199,\u5355\u8bcd\u95f4\u7528\u7a7a\u683c\u9694\u5f00

#include"stdio.h"void main(){int i;char str[100];printf("\u8bf7\u8f93\u5165\u4e00\u4e2a\u5b57\u7b26\u4e32:");gets(str);if(str[0]>=97&&str[0]=97&&str[i]<=122)str[i]=str[i]-32;}puts(str);}

\u5e0c\u671b\u6211\u7684\u56de\u7b54\u4f1a\u5bf9\u60a8\u6709\u6240\u5e2e\u52a9\uff01

\u7a0b\u5e8f\u5df2\u8c03\u8bd5\u8fc7\uff0c\u8fd0\u884c\u7684\u65f6\u5019\u628afilename\u6539\u4e3a\u4f60\u81ea\u5df1\u8def\u5f84\u4e0b\u7684\u6587\u4ef6\u3002
#include
#include
#include
char str[1000];
void openfile(char *filename)
{
FILE *fp;
int file_size;
if((fp=fopen(filename,"r")) == NULL)
{
printf("can not open this file\n");
exit(0);
}
fseek(fp,0,SEEK_END);
file_size=ftell(fp);
printf("%d\n",file_size);
fseek(fp,0,SEEK_SET);
fread(str,sizeof(char),file_size,fp);
str[file_size-1]='\0';
printf("%s\n",str);
fclose(fp);
}

void Split()
{
char w[100][100];
char *pfirst=str;
char *pend;
int i=0;
int j,sum=0;
memset(w,0,sizeof(w));
while(pfirst)
{
pend=strstr(pfirst," ");
if(pend==NULL)
{
strncpy(w[i],pfirst,strlen(str)-sum);
i++;
break;
}
strncpy(w[i],pfirst,pend-pfirst);
sum+=pend-pfirst+1;
pfirst=++pend;
i++;
}
for(j=0;j<i;j++)
printf("%s ",w[j]);

}
int main()
{
char filename[40]="/opt/opthb/liuly/a.txt";
openfile(filename);
Split();
return 0;
}

将文件中一行内容按照空格分割进行读取,可以采用fscanf("%s")来实现

实现过程:

参考代码:

#include <stdio.h>
int main(void)
{
FILE *fp ;
int i,j;
char words[100][21]; //最多读100个单词,每个单词不超过20个字符
fp=fopen("data.txt", "r");
if ( fp==NULL )
{
printf("open file error
");
return -1;
}
for( i=0;i<100;i++ ) //循环读取,控制不超过100个
{
if ( fscanf(fp, "%20s", words[i] )!= 1 ) //控制每个单词不超过20个
break;
}
fclose(fp);
for( j=0;j<i;j++ ) //反向输出各单词
printf( "%s ", words[j] ) ;
printf("
");
return 0;
}


程序已调试过,运行的时候把filename改为你自己路径下的文件。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
char str[1000];
void openfile(char *filename)
{
FILE *fp;
int file_size;
if((fp=fopen(filename,"r")) == NULL)
{
printf("can not open this file\n");
exit(0);
}
fseek(fp,0,SEEK_END);
file_size=ftell(fp);
printf("%d\n",file_size);
fseek(fp,0,SEEK_SET);
fread(str,sizeof(char),file_size,fp);
str[file_size-1]='\0';
printf("%s\n",str);
fclose(fp);
}

void Split()
{
char w[100][100];
char *pfirst=str;
char *pend;
int i=0;
int j,sum=0;
memset(w,0,sizeof(w));
while(pfirst)
{
pend=strstr(pfirst," ");
if(pend==NULL)
{
strncpy(w[i],pfirst,strlen(str)-sum);
i++;
break;
}
strncpy(w[i],pfirst,pend-pfirst);
sum+=pend-pfirst+1;
pfirst=++pend;
i++;
}
for(j=0;j<i;j++)
printf("%s ",w[j]);

}
int main()
{
char filename[40]="/opt/opthb/liuly/a.txt";
openfile(filename);
Split();
return 0;
}

参考资料:http://www.myexception.cn/c/378790.html
http://zhidao.baidu.com/link?url=CgmvQRCaUXVcoKb77RjpTbVjqX_l2RdDkEPDhNJweJ5RSwm9JzFoIDpabu2TcuNMQr6PmpQiRAMXVXD86hb7Nq

  • C璇█濡備綍灏嗘枃浠朵腑涓琛屽唴瀹规寜鐓х┖鏍煎垎鍓,骞跺皢姣忎釜鍗曡瘝鍐欏叆鏁扮粍?_鐧惧害...
    绛旓細灏嗘枃浠朵腑涓琛屽唴瀹规寜鐓х┖鏍煎垎鍓茶繘琛岃鍙锛屽彲浠ラ噰鐢╢scanf("%s")鏉ュ疄鐜 瀹炵幇杩囩▼锛氬畾涔変簩缁村瓧绗︽暟缁勶紝鐢ㄦ潵鎺ユ敹璇诲埌鐨勬瘡涓崟璇 浠ヨ鏂瑰紡鎵撳紑鏂囦欢 寰幆璇绘枃浠讹紝灏嗗崟璇嶉愪釜璇诲叆鏁扮粍 寰幆缁撴潫鍚庯紝鍏抽棴鏂囦欢 杈撳嚭鏁扮粍涓殑鍗曡瘝锛屼互楠岃瘉 鍙傝冧唬鐮侊細include <stdio.h>int main(void){FILE *fp ;int i,j;char word...
  • C璇█濡備綍灏嗘枃浠朵腑涓琛屽唴瀹规寜鐓х┖鏍煎垎鍓,骞跺皢姣忎釜鍗曡瘝鍐欏叆鏁扮粍?_鐧惧害...
    绛旓細void openfile(char *filename){ FILE *fp;int file_size;if((fp=fopen(filename,"r")) == NULL){ printf("can not open this file\n");exit(0);} fseek(fp,0,SEEK_END);file_size=ftell(fp);printf("%d\n",file_size);fseek(fp,0,SEEK_SET);fread(str,sizeof(char),file_...
  • C璇█鎬庝箞鍋氬埌浠鏂囦欢涓璇诲彇涓琛鏁版嵁,鐒跺悗鏀瑰彉杩涓琛屽唴瀹
    绛旓細1銆佺敤fgets鍑芥暟鍙互璇诲彇鏂囦欢涓鏌愯鐨勬暟鎹紝鏌愬垪鏁版嵁灏卞繀椤讳竴涓竴涓鍏ユ瘡琛岀殑绗嚑涓瓧绗︼紝鍐嶅瓨鍏ュ埌涓涓瓧绗︿覆褰撲腑銆2銆佷緥绋嬶細include<stdio.h>#include<string.h>void main(){ char a[100],b[100],c[100]; int i=3,j=4,k=0; //绗笁琛岋紝绗洓鍒 FILE *fp = fopen("data.tx...
  • 濡備綍鐢C璇█灏鏂囨湰鏂囦欢涓唴瀹璇诲叆绋嬪簭,骞鎸夌収绗簩鍒楃殑鏁版嵁杩涜浠庡ぇ鍒...
    绛旓細include <stdio.h>#include <string.h>#include <malloc.h>typedef struct stt{ char c1[9]; int c2; struct stt *next;}STT;void readFile(FILE *fp);void writeFile(FILE *fp);void printfSTT();//鎵撳嵃閾捐〃void px();//灏嗛摼琛鎸塩2闄嶅簭鎺掑垪STT *sttHead=NULL,*sttTail=NULL...
  • C璇█涓浣曞皢鏂囦欢涓鐨勬煇琛岀殑瀛楃涓茶鍙栧嚭鏉?
    绛旓細include <stdio.h>#include <stdlib.h>#include <string.h>#define MaxCols 2000 //璁惧畾姣忚瀛楃鏁颁笉瓒呰繃MaxCols锛鏍规嵁鍙樺寲璋冩暣 //鑾峰彇宸茬粡鎵撳紑鏂囦欢fp鐨勭line琛鍐呭鍒皊tri锛屽鏋滄垚鍔熻繑鍥炲緱鍒扮殑瀛楄妭鏁帮紝//濡傛灉娌℃湁閭d箞澶氳锛岃繑鍥-2 int getlinetxt(FILE *fp,int line,char *stri){int i;fs...
  • C璇█鏂囦欢鎿嶄綔闂,鎬庢牱鏇挎崲鏂囦欢涓竴琛鏁版嵁
    绛旓細C璇█鎻愪緵浜嗘枃浠舵搷浣,浣嗘槸鏇挎崲鏂囦欢鐨鏌愪竴琛姣旇緝楹荤儲,涓嬮潰涓涓弬鑰冩柟娉,鏂囦欢涓瀛樿串鐨鍐呭濡備笅鎵绀: 閫氳繃浣跨敤涓嬮潰鐨勫嚑涓嚱鏁,fopen,fprintf,fscanf,fseek,ftell 銆傚叿浣撶殑鍑芥暟鍑芥暟鍘熷瀷濡備笅鎵绀: FILE*fopen(const char*filename,const char *mode); int fprintf(FILE*stream,const char *format,...) int fscanf(FI...
  • 鐢c璇█濡備綍璇诲叆骞朵娇鏂囨湰鏂囦欢鎸鏌愪竴鍒楁帓搴忚緭鍑?
    绛旓細浣跨敤鏂囦欢鎿嶄綔鍑芥暟鎵撳紑鏂囦欢锛岃鍙栦俊鎭紝杩涜鎺掑簭锛岄噸鏂板啓鍏ュ苟瑕嗙洊鍘熸枃浠躲備緥绋嬶細include <stdio.h>#include <stdlib.h>int comp(const void* a,const void* b){ return *(int*)a-*(int*)b; }int main(){ FILE *p;//鏂囦欢鎸囬拡 int i,j,a[1000]; p = fopen("鏂囦欢鍚嶇О", ...
  • C璇█涓浠.txt鏂囦欢涓寜琛岃鍙栧瓧绗︿覆鑷虫暟缁勪腑,鎬庝箞鍐?
    绛旓細鍙互璁惧畾鏂囦欢鍚嶄负in.txt, 瀛樻湁涓绯诲垪鏁村瀷鏁版嵁锛屼互绌烘牸鎴栨崲琛屽垎闅斿啓銆備唬鐮佸涓嬶細include int main(){ int v[100];//寮涓涓冻澶熷ぇ鐨勬暟缁勩俰nt i = 0, j;FILE *fp;//鏂囦欢鎸囬拡 fp = fopen("in.txt", "r");//浠ユ枃鏈柟寮忔墦寮鏂囦欢銆俰f(fp == NULL) //鎵撳紑鏂囦欢鍑洪敊銆俽eturn -1;while...
  • ...鏂囦欢濡備笅鍥炬墍绀,鎬庝箞缂栧啓c璇█鎶婇噷闈㈠唴瀹逛竴琛屼竴琛璇诲埌鎸囧畾鏁扮粍涓幓...
    绛旓細fp,"%s",str[count])>0) count++; fclose(fp); for (i=0; i<count; i++) { printf("%s\n",str[i]); } return 0;}鏂囦欢hello.txt鍐呭杩愯缁撴灉锛歅S锛氳繖涓湁灞闄愭э紝鍥犱负鐢ㄤ簡鍥哄畾闀垮害鏁扮粍锛屾瘡琛屾渶澶100瀛楃锛屾渶澶氳鍏10琛 ...
  • c璇█ 濡備綍鎶婁竴涓枃浠鐨勬瘡涓琛璇诲叆鍒颁竴涓簩缁存暟缁勪腑,
    绛旓細fopen鍑芥暟鍙互璇诲彇鏂囦欢 璇诲埌鐨勬瘡涓琛淇濆瓨鍦ㄥ瓧绗︽暟缁勪腑锛鏍规嵁绌烘牸浣滀负鍒嗛殧绗﹁繘琛屽垎鍓 鍐嶇敤atoi寰楀埌鏁板瓧锛屼繚瀛樺湪鏁扮粍涓紝澶т綋鎬濊矾灏辨槸杩欐牱 渚嬪瓙 include <stdio.h>#include <string.h>#define MAXLINE 3#define MAXCOLUMN 10void main(void){FILE *fp; //鏂囦欢鎸囬拡char arr[MAXLINE][MAXCOLUMN]={0}; ...
  • 扩展阅读:扫一扫题目出答案 ... c语言按行读取txt文件 ... c语言如何输出空一行 ... c语言怎么直接输出汉字 ... c语言读取文件每一行 ... c语言写入文件换行 ... c语言怎么五个一行 ... c语言头文件怎么导入 ... c语言如何把一行写到多行 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网