簡體   English   中英

在 c 中使用 strsep 函數需要幫助

[英]Need help using the strsep function in c

int main(int argc, char *argv[])    
 {
    char *line, buffer[1024];
    char *token, *setValue, *pointer;


    FILE *fp = fopen("file", "r");
    if(fp == NULL)
    {
        printf("File was unable to be opened.\n");

    }

     fgets(buffer,1024,fp);  
      printf("%s\n", buffer);
     while(fgets(buffer,1024,fp) != NULL)
  {
    strcpy(token, strsep(&buffer, ","));
    printf("%s\n", token);
  }



 return 0;
 }

我在理解 strsep 的工作原理時遇到了一些麻煩.. 我已經查找了它的教程,但是當我嘗試不同的方法時,它一直無法編譯.. 如果有人幫助我理解,我將不勝感激語法及其工作方式。 謝謝你。

**編輯:“緩沖區”包含“我,曾經,在,學校,學校”

****編輯 x2:我正在嘗試解析一個 csv 文件,並以我在桌面上創建的基本“緩沖區”為例。 我想用相應的逗號分隔不同的單詞。

關於:

strcpy(token, strsep(&buffer, ","));

變量token只是一個指針,它沒有被設置為指向應用程序擁有的任何內存。 因此,它將包含堆棧中變量位置的垃圾。

結果是未定義的行為,並且可能導致段錯誤事件。

建議將token聲明為

char token[ 1024 ];

所以它足以容納最大長度的字符串(即buffer[]的長度buffer[]

因為上面還不夠糟糕:

發布的代碼缺少語句: #include <string.h>以便公開函數strsep()的原型,因此編譯器將假設參數和返回值是int而不是它們的實際類型。

發布的代碼也缺少語句: #include <stdio.h>因此函數的參數和返回類型: fopen()fgets() 、 printf() and even the struct type for FILE and even the struct type for are assumed to be int`而不是它們的實際類型。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM