[英]Updating char[] field in a struct with strcpy. Pointer issue in C
我想知道如何從文件中用標記化的行設置結構的字符串值。 基本上,我正在閱讀"Person 100 100"
(由\\t
分隔)這樣的行,並且我需要使用返回的值來設置結構的字符串值。
錯誤信息:
||In function 'main':|
|32|warning: passing argument 1 of 'strcpy' from incompatible pointer type|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\..\include\string.h|45|note: expected 'char *' but argument is of type 'char **'|
||=== Build finished: 0 errors, 1 warnings ===|
程式碼片段:
char buffer[20];
fgets(buffer, 20, file);
while (*buffer != EOF)
{
struct student temp;
char *result = NULL;
//set name
strcpy(temp.name,strtok(buffer,"\t"));
//set midterm
result = strtok(NULL, "\t");
temp.midterm = atoi(result);
//set final
result = strtok(NULL, "\t");
temp.final = atoi(result);
}
strcpy函數的定義如下:
char *strcpy(char *restrict s1, const char *restrict s2);
不知道學生的結構,因此您可能會在第一個參數中傳遞參數錯誤。 和下面的代碼是可以的:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct student
{
char name[128];
int midterm;
int final;
};
char buffer[] = {"Person 100 100"};
//fgets(buffer, 20, file);
int main()
{
//while (*buffer != EOF)
{
struct student temp;
char *result = NULL;
//set name
strcpy(temp.name,strtok(buffer,"\t"));
//set midterm
result = strtok(NULL, "\t");
temp.midterm = atoi(result);
//set final
result = strtok(NULL, "\t");
temp.final = atoi(result);
printf("name = %s, midterm = %d, final = %d\n", temp.name, temp.midterm, temp.final);
}
return 0;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.