簡體   English   中英

從c中的文件中讀取字符串

[英]reading string from a file in c

我有一個像這樣的輸入文件:

1 2 2 Medium 
1 2 0 Medium
2 1 0 Medium
2 0 2 Medium

我使用fscanf()讀取整數值,這是正常的。 有沒有人有任何想法如何讀取字符串並將其放在一個字符串變量???

int x,y,z; 
char* cs; 
fscanf(fp3,"%d",&x); 
fscanf(fp3,"%d",&y); 
fscanf(fp3,"%d",&z); 
fscanf(fp3,"%s",&cs);

您需要已分配空間來存儲字符串。 嘗試這樣的事情:

int x,y,z; 
char cs[20];
fscanf(fp3,"%d",&x); 
fscanf(fp3,"%d",&y); 
fscanf(fp3,"%d",&z); 
fscanf(fp3,"%19s",cs);

您還可以一次掃描所有值:

fscanf(fp3,"%d %d %d %19s", &x, &y, &z, cs);

注意:始終在scanf模式中使用%<length>s以防止緩沖區溢出。

2話要說:

  1. 使用一個格式字符串時看起來更好
  2. 你應該使用一個循環

這是一些代碼:

int a,b,c;
char str[256];
while(fscanf(fd, "%d %d %d %s ", &a, &b, &c, str) == 4){
    //get some coffee
}

這是標准,而不是文件結束循環。 此外, str不需要&因為它已經是指針而不需要像abc那樣被引用。 %s之后,格式字符串末尾的空格意味着一旦讀取了一個空格,它就會停止。 這樣它就不包含在字符串str

注意兩件事:

  • 您需要保留緩沖區以將字符串復制到。
  • 也永遠不會使用普通的“%s”scanf模式。 應該禁止。 而是插入緩沖區的長度,在%s之間減去1。 例如,8字節緩沖區的“%7s”。

暫無
暫無

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

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