[英]print each word in new line with removing extra space in c programming
我的源代碼
for(i=0;str[i]!='\0';i++)
{
if(str[i]!=' '){
str2[j]=str[i];
flag=1;
}
if(flag==1 && str2[j]!=' ')
{
printf("\n");
printf("%c",str2[j]);
flag=0;
}
}
我的輸出:
I am joe
I
a
m
j
o
e
但是我想要這樣的輸出:
I
am
joe
我希望每個單詞都在換行中打印,就像I
在一行中am
在另一行中一樣, joe
在另一行中也需要在joe
之前刪除多余的空間
我發現用新行替換空格字符會更容易
#include <stdio.h>
int main() {
char str[] = "I am joe";
for(int i = 0; str[i] != '\0'; i++) {
if(str[i] == ' ')
str[i] = '\n';
}
printf("%s\n", str);
return 0;
}
您只需要弄清楚如何修剪這些多余的空間即可。...
例如,當您對輸入“ I am joe”的“ a”進行程序分析時,第一個if語句使str2 [j]為'a'且標志為1,因此如果條件為true,則下一個條件為printf完成這項工作,打印換行符和'a';
char str[100] = "I am joe";
char str2[100] = {0};
int i,j;
/*flag means alread replace space to newline,so ignore continuous space*/
int flag = 0;
for(i=0, j=0;str[i]!='\0';i++)
{
if(str[i] ==' '){
if(flag != 1){
str2[j++] = '\n';
flag = 1;
}
}
else{
str2[j++] = str[i];
if(flag == 1){
flag = 0;
}
}
}
printf("%s\n", str2);
return 0;
您應該學習如何使用GDB等調試工具。
您可以遵循Gabriele方法,但是如果您不想放置換行符而不是空格,則可以這樣做。
在這里,我們只有一個循環,無論我們在哪里看到空間,我們都在打印換行符,否則繼續打印字符串和循環符,直到當str[i]='\\0'
達到i
的值時,循環才停止。
#include <stdio.h>
int main() {
int i = 0;
char str[] = "I am joe";
while (str[i] != '\0') {
if (str[i] == ' ')
printf("\n");
else
printf("%c", str[i]);
i++;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.