1
ファイルからデータを使用して構造体にデータを読み込まなければならない問題に取り組んでいます。strcpyの前にchar配列の最後にヌル文字を追加しようとしています
このファイルは名前があり、数行のASCIIアートが#と評価で終わるように編成されています。
typedef struct
{
char* name;
char* art;
int rating;
}CASE;
を、私は私のソースをコンパイルすると、私は次の警告を得続ける:この行の
multiple-character character constant
overflow in implicit constant conversion
ここに私は私の構造体は次のように設定している例
Sample Name
(S)
(S)
# 5
ですbuffer[artCount] = '/0';
ここで、artCountはバッファ自体のstrlenです。
文字配列の末尾にヌル文字を追加するだけで、strcpyを準備することができます。ここに私の論理に何か間違いがありますか?
機能:
/*CASE* all is an empty array of CASE structs*/
void readFile(FILE* FPin, CASE* all)
{
CASE* walker = all;
int count = 0;
int artCount;
char buffer[160];
if((FPin = fopen("art.txt", "r")) == NULL)
{
printf("Error opening file.");
exit(100);
}
walker->name = (char*)malloc(sizeof(char)*100);
/*Reads in the name*/
while(fgets(walker->name, 100, FPin) != NULL)
{
/*Reads in the art*/
while(fscanf(FPin, "%c", buffer) != '#');
artCount = strlen(buffer);
buffer[artCount] = '/0';
walker->art = (char*)malloc(sizeof(char)*160);
strcpy(walker->art, buffer);
/*Reads in the rating*/
fscanf(FPin, "%d", &walker->rating);
count++;
walker++;
}
fclose(FPin);
return;
}
エスケープシーケンスは '\ 0' - **バックスラッシュ**ゼロ – sidyll
' sizeof(char) 'はC標準によって1になることが保証されています。 –
6年、誰もが 'artCount = strlen(buffer); buffer [artCount] = '\ 0''(右の '\\'でも)何もしませんか? – trentcl