[英]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.