我的程序假设要采用字符串并在一行中打印每一行。我正在寻找空间来决定何时将一个字打印到一个新行。我使用一个名为hold的字符串来存储每个字母,直到找到一个空格。那个单词然后被打印到屏幕上。我遇到的问题是,如果最后一个词处于保留状态比前一个词更长,那么新词将与最后一个词的尾部一起打印。我似乎无法清除我用来暂时保存文本块的字符串
示例:如果最后一个单词是“Program”,并且下一个单词是“cat”,则屏幕的输出将是Program,然后是catgram。
下面是我的代码:
#include<stdio.h>
#include<string.h>
char *string;
char *hold;
int main(void)
{
string = malloc(200);
hold = malloc(50);
int i=0;
int j=0;
printf("please enter a string\n");
scanf("%[^\n]",string);
while (string[i] !='\o')
{
if (string[i] !=' ')
{
hold[j] = string[i];
j++;
}
else
{
printf("%s\n",hold);
j = 0;
}
i++;
}
return 0;
free(string);
}
恐怕你拼错'\ 0'为'\ O'。编辑:哦,你也永远不会终止字符串'hold'。 –
看到您的问题如何解决,您可以接受其中一个答案吗? –
发布的代码不会干净地编译。它缺少以下语句:'#include',以便在执行'return 0;'语句时正确地为'free()'和'malloc()' –
user3629249