순수 C 코드 :
먼저 배열의 배열을 할당 할 필요가
, 다음 하나 그것은 큰 크기의 임시 문자열로 문자열을 검색하는 것이 가장 좋습니다 각 문자열 하나를 할당하고, 나중에 문자열을 중복. 이 (물론, 또는 C99되지 않음) C 준수하는 것이 아니라 C++을 준수하지 않기 때문에 내가 for (i
에 for (int i
을 변경 한
int i,nb_names = 10;
char **firstName = malloc(sizeof *firstName * nb_names);
char **lastName = malloc(sizeof *lastName *nb_names);
char tempn[1000],templ[1000];
for(i = 0; i<nb_names; i++){
fscanf(fp,"%s %s", tempn,templ);
firstName[i] = strdup(tempn);
lastName[i] = strdup(templ);
}
참고. C++의 경우 mallocs를 삭제하고 대신 std::vector
및 std:string
을 사용하십시오.
가능한 경우 C++을 사용하는 것이 좋습니다. 나는 2D 배열을 적절히 할당하려고 시도하는 (실패한) 5 분 전에 나를 포함하여 많은 C/C++ 질문에 대답했다. C++ 라이브러리 코드를 사용하는 C++은 훨씬 더 명확합니다. C 또는 C++ :
#include <vector>
#include <string>
#include <iostream>
using namespace std;
int main()
{
int nb_names = 10;
vector<string > firstName(nb_names);
vector<string > lastName(nb_names);
for(int i = 0; i<nb_names; i++){
cin >> firstName[i];
cin >> lastName[i];
}
return 0;
}
가 하나 개의 언어를 선택 표준 입력에서 읽기 전체 C++ 예를
. – chux
디버깅 도움말을 찾는 질문 ("이 코드가 작동하지 않는 이유는 무엇입니까?")에는 원하는 동작, 특정 문제 또는 오류 및 질문 자체에서이를 재현하는 데 필요한 가장 짧은 코드가 포함되어야합니다. 분명한 문제 성명이없는 질문은 다른 독자에게 유용하지 않습니다. See : 최소한의 완전하고 검증 가능한 예제를 만드는 방법. – Olaf
C와 비슷하지만 실제로 C++ 인 경우 fstream 사용을 고려하십시오. – alexeykuzmin0