c语言如何用for循环实现字符串中遇到空格就换行??

我想从一个txt文本里的内容读入到字符串里,然后用for语句修改,使字符串遇到空格就换行,请问怎么实现?我已经把内容读到字符串里了
#include "stdio.h"
#include "string"
#include "stdlib.h"
using namespace std;
int main(void)
{
FILE *fp;
fp = fopen("d:\\我的文档\\dialogue.txt" , "r");
fseek( fp , 0 , SEEK_END );
int file_size;
file_size = ftell( fp );
printf( "%d" , file_size );
char *tmp;
fseek( fp , 0 , SEEK_SET);
tmp = (char *)malloc( file_size * sizeof( char ) );
fread( tmp , file_size , sizeof(char) , fp);
printf("%s" , tmp );
return 0;
}

通过字符串逐个与空格字符相比较,遇到空格输出换行符即可。


具体实现方法可以参考如下程序段:

char a[]="ab df23 df% 1df";
int i=0;
for(i=0; a[i]!='\0'; i++)  // 遍历字符数组a中所有字符
{
    if(a[i]==' ')  // 如果字符a[i]为空格字符,那么就输出换行符
        printf("\n");
}

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-12-16
LZ你这几行代码都写的出来,还不会这个问题么。。。。
int main(void)
{
int file_size;
char *tmp, *pc;
FILE *fp;
fp = fopen("d:\\我的文档\\dialogue.txt" , "r");
fseek( fp , 0 , SEEK_END );
file_size = ftell( fp );
printf( "%d" , file_size );
fseek( fp , 0 , SEEK_SET);
tmp = (char *)malloc( file_size * sizeof( char ) );
fread( tmp , file_size , sizeof(char) , fp);
printf("%s" , tmp );
pc = temp;
while (pc)
{
if (*pc == ' ')

putchar('\n');

else

putchar(*pc);

}
return 0;
}追问

后面加的指针貌似有问题?程序提示错误啊,不过大概懂一点了,谢谢了先

追答

while (pc)改成while (pc++)
忘了改指针了,不好意思。程序提示错误是什么?

追问

'pc' : undeclared identifier

'=' : cannot convert from 'char *' to 'int'

追答

你用我给你的代码,把里面的pc=temp;改成pc=tmp,这地方多了一个e

本回答被提问者采纳

c语言如何用for循环实现字符串中遇到空格就换行??
通过字符串逐个与空格字符相比较,遇到空格输出换行符即可。 具体实现方法可以参考如下程序段: 1 2 3 4 5 6 7 char a[]="ab df23 df% 1df"; int i=0; for(i=0; a[i]!='\\0'; i++) \/\/ 遍历字符数组a中所有字符 { if(a[i]==' ') \/\/ 如果字符a[i]为空格字符,那么就输出换行符 printf...

C语言,输入一行文字,单词间以空格分隔,然后分离其中的单词按每行一个...
{ for(;s[i]&&s[i]!=' ';i++)使用循环逐个字母输出每一个空格后的单词,即:字符不为空格或结束符 遇到空格后就 printf("\\n");换行,从新执行 for(i=0;s[i];i++)if(s[i]!=' '){ for(;s[i]&&s[i]!=' ';i++)printf("%c",s[i]);printf("\\n");i--;} 直到结束...

做一个c语言程序,输入一个英文句子,然后把句子中的空格都换成换行 输...
include <stdio.h>int main(){char ch[200];int i=0;gets(ch);while(ch[i]!='\\0'){if (ch[i]==' ') printf("\\n");elseprintf("%c",ch[i]);i++;}}

c语言中换行符和空格符?
这是因为在C语言中,在用gets()输入字符时,遇到换行停止,这是由他提供的库函数的规定而确定的。但是它在保存的时候并没有把回车符保存在字符数组中而且自动添加的空字符作为字符串结束符。所以在for循环中循环停止条件为a[i]!='\\0'。而不是a[i]!='\\n'。遇到空格停止直接就是a[i]!=' '...

C语言中怎样用for循环给字符数组赋值
方法一:char a[100];for(;scanf("%c",&a[i])!=EOF;); \/\/for循环读入每个字符,包括空格符,换行符,直到文件末尾。这样整个输入都被读到一个字符串当中。方法二:char a[100][100]; int i;for(;gets(a[i++]);); \/\/for循环读入每行字符串,这样每行输入由一个字符串储存。

C语言输入一个字符串 为什么遇到空格就输出了 为什么没有溢出
(1) scanf函数就是冲缓存里面取字符串,遇到空格或换行符结束 解决方法就是:使用gets(str); 一次性读取缓存里面的字符串 (2) 你开辟的内存空间就20个char,就只能存储20个char了

C语言怎么实现空格输出后还能换行?
这样修改就可以了:在循环体中不需要换行,在循环结束以后换行就可以了。include<stdio.h> int main(){ int a[10]= {0};for(int i=0; i<10; ++i)printf("%d ",a[i]);printf("\\n");return 0;}

在C语言中,for循环中的循环条件是若数组a[i]为空值则停止怎么写啊?
针对字符数组 for(int i=0;a[i]!=‘\\0’;i++)或for(int i=0;a[i]!=0;i++)注意:这种方式存在越界的风险,因为如果数组中没有‘\\0'的字符将会发生越界,最好用sizeof获取数组大小,然后再判断是否为'\\0'这样,当循环到数组结束时若任然没有'\\0'也会停止循环 ...

C语言 如何用一个循环输入字符串,例如123 e-3并换行结束?
include<stdio.h> main(){ char c[5];int i;for(i=0;i<5;i++){ scanf("%1c",&c[i]);} system("pause");}

c语言for循环,标记的地方怎么实现换行的,当n=5时,j=6。此时内循环就结束...
也就是再输出第六个数。因为在这个程序中是先输出数字再计数的,所以这个判断和换行就写在输出数字的前面。其实我们通常都不是这样,通常是先输出一个数字,然后再计数,最后是判断满了输出次数就换行。这样比较合乎逻辑思维。输出结果上的区别就是,如果只有一行,结束时满了输出的个数它也换行。

相似回答