如何找到在C中写入文件时删除换行符的更好方法?

如何找到在C中写入文件时删除换行符的更好方法?,c,newline,C,Newline,这段代码运行良好,我理解每一行,除了一行string[--len]='\0'。--len做了什么,以及--len是如何删除换行符的 #include <stdio.h> #include <stdlib.h> #include <string.h> int main() { FILE * fp1 = fopen("file.csv", "r"); FILE * ft1 = fopen("new.csv

这段代码运行良好,我理解每一行,除了一行
string[--len]='\0'
--len
做了什么,以及
--len
是如何删除换行符的

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
  FILE * fp1 = fopen("file.csv", "r");
  FILE * ft1 = fopen("new.csv", "a");
  char take[200], string[200];
  char * data1 = NULL;
  char * data2 = NULL;
  char * data3 = NULL;

  while(fgets(take, 200, fp1)){
    data1 = strtok(take, ",");
    data2 = strtok(NULL, ",");
    data3 = strtok(NULL, ",");

    printf("Enter your string: ");
    fgets(string, sizeof(string), stdin);
    
    // Only fprintf is not able to remove newline. That's why fprintf is used inside this code 
    size_t len = strlen(string);
    if(len>0 && string[len-1] == '\n')
    {
      string[--len] = '\0';
      fprintf(ft1, "%s,%s,%s\n", data1, string, data3);
      break;
    }
  }

  return 0;
}
#包括
#包括
#包括
int main()
{
FILE*fp1=fopen(“FILE.csv”,“r”);
文件*ft1=fopen(“new.csv”,“a”);
char take[200],string[200];
char*data1=NULL;
char*data2=NULL;
char*data3=NULL;
而(fgets(采取,200,fp1)){
数据1=strtok(取“,”);
data2=strtok(NULL,“,”);
data3=strtok(NULL,“,”);
printf(“输入字符串:”);
fgets(字符串、sizeof(字符串)、stdin);
//只有fprintf不能删除换行符。这就是为什么在代码中使用fprintf
尺寸长度=strlen(字符串);
如果(len>0&&string[len-1]='\n')
{
字符串[--len]='\0';
fprintf(ft1、%s、%s\n)、数据1、字符串、数据3);
打破
}
}
返回0;
}
如果
string==“abc\n”
,则数组包含以下值:

string[0] == 'a'
string[1] == 'b'
string[2] == 'c'
string[3] == '\n'
string[4] == '\0' // this is the null terminator
len==4

string[--len] = '\0';
len
中减去
1
,使其成为
3
,然后将
'\0'
分配给数组的该元素
string[3]
最初包含换行符,但这会用空终止符覆盖它。因此字符串现在包含:

string[0] == 'a'
string[1] == 'b'
string[2] == 'c'
string[3] == '\0' // this is the null terminator

这是没有换行符的
“abc”

执行时,您对
字符串中的值和
len
的值了解多少?您对
--
了解多少?@ScottHunter
字符串
是我在文件中输入的值,但执行后,它将数据打印到文件中,并添加了换行符
string
。为了删除换行符,我得到了一些帮助并编写了代码,但不理解
--len
--
是减量运算符。C中的字符串存储为带有空终止字符的数组。希望这能给你一些单词,你可以通过谷歌来了解更多。我最喜欢的是。当然,字符串不必来自
fgets()
,但它们通常来自。它是防弹的:在没有换行符或应用于空字符串时是无害的。非常感谢!