Ansi C - 删除换行符并将其更改为空格

时间:2014-04-08 18:53:25

标签: c delimiter

    void createTextFile()
{
    FILE *textFile = fopen("/Users/Trenae_Alyxandria_Johnson/Desktop/myTextFile.txt", "w");
    char c; 
    fputs("1\n2\n3\n4\n5", textFile);
    fclose(textFile);

    textFile = fopen("/Users/Trenae_Alyxandria_Johnson/Desktop/myTextFile.txt", "r");
    while (c != EOF)
    {
        c = fgetc(textFile);
    }
    for(int i = 0; i < 6; i++)
    {
        if(c(i) == '\n')
        {
            c(i) = ' ';
        }
    }

    printf("%c" , c);
    fclose(textFile);
}

我正在尝试删除新的行字符并将其更改为空格。我知道这不是一个数组,但我想我是在问我如何解析文件,看看我什么时候到达新行然后将其删除并用空格替换它,这样第一次输入的1-5就可以了出现在一行上,每个行都有一个空格字符。 错误:

错误:下标       value不是数组,指针或向量         if(c [i] =='\ n')

2 个答案:

答案 0 :(得分:1)

不需要for循环。你可以删除它。 `

 c = fgetc(textFile);
 while (c != EOF){
    if(c == '\n')
    {
        c = ' ';
    }
    printf("%c" , c);
    c = fgetc(textFile);
 }

char不是字符串,字符是字符。所以c[i]并不意味着什么。它希望存储一个字符串,使用由\0终止的char数组:

 char s[100];
 s[99]='\0'
 printf("%s",s);

答案 1 :(得分:1)

int c;//return of fgetc type is int

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