如何用新线替换空格?

时间:2017-01-29 09:25:34

标签: c c-strings string-parsing

如何使用C?

在字符串中用换行符(“\ n”)替换空格

3 个答案:

答案 0 :(得分:4)

#include <stdio.h>
#include <string.h>
#define SIZE 50

int main(int argc, char **argv)
{
     char string[] = "this is my string";
     size_t length, c;

     length = strlen(string);

     for(c = 0; c < length; ++c)
     {
          if(string[c] == ' ')
          {
               string[c] = '\n';
          }    
     }

     printf("%s\n", string);

     return 0;
}

答案 1 :(得分:3)

你的问题很模糊。

这是一个简单的过滤器,用于将输入流中的所有空格更改为换行符:

#include <stdio.h>

int main(void) {
    int c;

    while ((c = getchar()) != EOF) {
        putchar(c == ' ' ? '\n' : c);
    }
    return 0;
}

修改

如果您有兴趣修改字符串,您应该知道字符串文字是不可修改的,尝试修改它们具有未定义的行为。

您应该找到空格字符并将换行符('\n')存储在相应的偏移处。

您可以使用指针和strchr()功能:

char *p = strchr(string, ' ');
if (p != NULL) {
    *p = '\n';
}

处理循环中的所有空格:

for (char *p = string; (p = strchr(p, ' ')) != NULL; p++) {
    *p = '\n';
}

或者您可以使用带有索引变量的for循环:

for (size_t i = 0; string[i] != '\0'; i++) {
    if (string[i] == ' ') {
        string[i] = '\n';
        //break;   // uncomment the break if you want a single space changed
    }
}

答案 2 :(得分:1)

简单程序:

int c;//return of fgetc type is int

while(EOF!=(c=fgetc(file)))
    putchar(c == ' ' ? '\n ' : c);