将文件中一行内容按照空格分割进行读取,可以采用fscanf("%s")来实现
专注于为中小企业提供成都网站建设、网站设计服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业永宁免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了1000+企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
实现过程:
定义二维字符数组,用来接收读到的每个单词
以读方式打开文件
循环读文件,将单词逐个读入数组
循环结束后,关闭文件
输出数组中的单词,以验证
参考代码:
#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\n");
return -1;
}
for( i=0;i100;i++ ) //循环读取,控制不超过100个
{
if ( fscanf(fp, "%20s", words[i] )!= 1 ) //控制每个单词不超过20个
break;
}
fclose(fp);
for( j=0;ji;j++ ) //反向输出各单词
printf( "%s ", words[j] ) ;
printf("\n");
return 0;
}
strtok函数
网页链接
char str[] ="i love c love c";
const char * split = " ";
char * p;
p = strtok (str,split);
while(p!=NULL) {
printf ("%s\n",p);
p = strtok(NULL,split);
}
这么循环
说下我的逻辑,不一定最优
先弄个结构体struct里面有一个char*和一个int
再建个struct的数组
在每次循环对比之前获得的struct数组中是否含有相同的字符串
有就计数器+1
没有就在数组中为null的地方加上一个成员为这个字符串和计数为1的struct
循环结束时遍历struct数组
好久没写C了,怕给你的代码有bug,就写思路把
一个函数搞定
#include stdio.h
int convert(char *s, int* a)
{
int t = 0, i = 0, r = 0;
while(1)
{
if(s[i] == ' ' || s[i] == 0)
{
a[t++] = r;
r = 0;
}
else if(s[i] = '9' s[i] = '0')
{
r = r*10 + s[i] - '0';
}
if(s[i] == 0) break;
i++;
}
return t;
}
int main()
{
char *str = "1 2 3 4 5 6";
int a[10];
int t,i;
t = convert(str, a);
for(i = 0; i t; i ++)
printf("%d\n", a[i]);
return 0;
}
scanf("%s",a);
scanf输入的以空格或回车结束 。
所以a只接受到了空格之前的字符 ,所以就出问题了。
改成 gets(a)就好了
程序源码如下:
#includestdio.h
#includestring.h
int main(void)
{
char str[1000];//定义一个字符串数组
char strnew[1000];//定义一个备用字符串数组
char m[] = " ";//定义空格变量
printf("请输入一串字符:");//文字提示输入字符串
gets(str);//输入字符串
char *p = strtok(str,m);//取str与m的指针
printf("%s\n",p); //输出
p = strtok(NULL,m);
while(p) //遍历输出
{
printf("%s\n",p); //输出字符串
p = strtok(NULL,m); //指向下一个
}
}
程序输出结果:
扩展资料:
C语言:输入一个字符串放入数组里,删除其中的空格
#include stdio.h
#includestring.h
#define N 100
void main()
{
int i=0,j;
char c,str[N];
printf("输入字符串str:\n");
while((c=getchar())!='\n')
{
str[i]=c;//输入字符串
i++;
}
str[i]='\0';
for(i=0;str[i]!='\0';i++)
{
if(str[i]==' ')
{
for(j=i+1;str[j]!='\0';j++)
{
str[j-1]=str[j];
}
str[j]='\0';
}
else continue;
}
str[i-2]='\0';
printf("去掉空格后的字符串为:\n");
for(i=0;str[i]!='\0';i++)
printf("%c",str[i]);
printf("\n");
}
需要准备的工具:电脑。
1、当要向输出设备(显示屏、打印机等)输出字符时,可以用 c 格式描述符控制。如下所示代码即输出字符ch (a) :char ch = 'a';printf("Character: %c \n",ch);
2、在需要输出十进制数字时,可以用d 或 i 控制输出,如下所示: int dcm = 24; printf("Decimal number: %d\n",dcm); printf("Decimal number: %i\n",dcm);
3、八进制输出如下所示,利用 o 或 #o 控制输出八进制格式数字:int oct = 24;printf("Octal1: %o\n",oct);printf("Octal2: %#o\n",oct);
4、十六进制输出同八进制一样,利用 x 或 #x 可以输出控制十六进制格式数字,如下所示:int hexi = 234;printf("Hexidecimal1: %x\n",hexi);printf("Hexidecimal2: %#x\n",hexi);
5、 字符串输出,在C语言中输出字符串可以使用s控制即可。