0

私は C を学ぼうとしてきましたが、ライブラリを含めることに固執しています。strcpy() を使用する必要がありますが、そのメソッドは iostream ライブラリに含まれていますが、ライブラリを含めようとすると、プログラムでエラーが発生します。「iostream」、「iostream.h」、、を使用してみましたが、「iostream.h が見つかりません」というエラーが表示されるか、プログラムが 100 個のエラーを超えてクラッシュするだけです。コードが空であっても、同じ結果が得られます。コードは次のとおりです。

#include "iostream"

int main(void)
{
}

うん、それだけですでにクラッシュします。そして、これが私が得ているエラーの一部です(ここにすべてを貼り付けることはできませんでした):

1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(37): error C2061: syntax error : identifier 'abs'
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(37): error C2059: syntax error : ';'
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(39): error C2061: syntax error : identifier 'acos'
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(39): error C2059: syntax error : ';'
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(39): error C2061: syntax error : identifier 'asin'
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(39): error C2059: syntax error : ';'
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(40): error C2061: syntax error : identifier 'atan'
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(40): error C2059: syntax error : ';'
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(40): error C2061: syntax error : identifier 'atan2'
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(40): error C2059: syntax error : ';'
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(40): error C2061: syntax error : identifier 'ceil'
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(40): error C2059: syntax error : ';'
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(41): error C2061: syntax error : identifier 'cos'
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(41): fatal error C1003: error count exceeds 100; stopping compilation
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

そうです、エラーが 100 を超えても、プログラムはカウントを停止します。理由がわかりません。通常のライブラリを含めているだけです。strcpy() に相当するものはありますか? 私は主にこのように使いたかった(練習用):

#include "stdafx.h"
#include "stdlib.h"
#include "stdio.h"
#include "conio.h"
#include "iostream"

int main(void)
{
    struct person 
    { 
        int id; 
        char name[50];
        int age;
    }; 

    struct person p1;

    p1.id = 5595; 
    strcpy(p1.name, "Myname");
    p1.age = 18;

    printf("%d%s%d", p1.id, p1.name, p1.age);
}
4

3 に答える 3

4

<iostream>C++ ヘッダーです (名前が示すように、入力/出力ストリームを処理します)。あなたが望むならstrcpy、あなたが必要<string.h>です。

于 2012-04-07T20:52:01.223 に答える
1

ソース ファイルが「.c」の場合は、名前を「.cpp」に変更するだけです。

その後、C++ としてコンパイルされ、C++ ヘッダーが作成され、C++ ストリームを使用できるようになります。

ただし、iostream の必要性はないと思います。

Strcpy とその仲間たちは " <string.h>" にいます。それを含めるだけで、「stdio.h」(あなたがやっているように); 「iostreams」#includeを削除してください...そして人生は良いはずです。

于 2012-04-07T20:54:08.897 に答える
0

iostreams は C++ のみの機能です。s ヘッダー ファイルは、iostreamC ではなく C++ で記述されています (はい、これらは別の言語です!) おそらく、コンパイラを C モードで呼び出しているため、コンパイラがヘッダー ファイルを参照すると、もちろん多くのエラーがスローされます。で使用される構文の多くは、iostreamC++ モードでのみ意味を持ちます。

sを使用する場合iostreamは、C++ モードでコンパイルする (そしてそれに応じて適切な最新の C++ でコーディングする) か、C 専用の別のライブラリを使用するか、必要に応じて独自のコードを実装して回避する必要があります。

この場合、明らかにやりたいことは を使用することだけですstrcpy()。それはstring.hではなくで宣言されていiostreamます。(string.hは C ヘッダー ファイルです。)#include <string.h>コンパイルする必要があります。

于 2012-04-07T20:51:56.523 に答える