텍스트 파일에서 두 개의 열을 추출하려고합니다. 첫 번째 열은 숫자의 실수 부분이고 허수 부분의 두 번째 열입니다. 파일에서 숫자 목록을 문자열로 추출했지만 문자열을 두 부분으로 분리하는 방법을 모르겠습니다. 나는 sscanf 함수를 사용하려고 시도했지만 hasnt는 작동했다. 어려운 부분은 숫자가 양수와 음수가 될 수 있기 때문에 음수를 제거하기 때문에 strtok 함수의 구분 기호에서 +와 -를 사용할 수 없습니다. Iv는 며칠 동안 붙어있어 어떤 제안이라도 감사 할 것입니다. 미리 감사드립니다. 다음은 sscanf 행에서 오류가 발생하는 코드입니다.
0 0
-4 100
45 -234
-56 -78 나는 그런는 실수가 발견문자열에서 복소수를 추출하려고 시도했습니다.
:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <complex.h>
char array[35]= "[[[1+1i -4+100i 45-234i -56-78i]]]";
char *arrayp[35];
int count,n,i,j;
double complex z1;
double real = 0;
double imaginary = 0;
int main()
{
arrayp[0] = strtok(array," []");
n=1;
while (arrayp[n-1]!=NULL)
{
arrayp[n] = strtok(NULL, " []");
n++;
}
// up to this point it has been tested to work. the remaining code is very
// sloppy since I have tried 8 different things and have quickly written one of
// the options tried.
for(j=0;j<n;j++)
{
if (strchr(*arrayp, '+'))
{
sscanf(arrayp[j],"%f+%fi", real, imaginary);
}
else if(arrayp string has equal to more than 1 '-')
{
sscanf(arrayp[j],"%f%fi", real, imaginary);
}
}
}
출력은 다음과 같이해야한다 strchr에서 * arrayp를 검색하려하지만 포인터를 문자열로 변환하여이 파일에 넣을 수있는 방법을 모른다. 도움과 노력에 감사드립니다.
도움을 주셔서 감사 드리며 작은 실수를 수정했습니다. 나는 여전히 이상한 대답을 얻고 있습니다. 디버깅을 통해 나는이보고 있어요 : (GDB) 페이지 실제 $ 1 = 5.2635442471208903e-315 어떤 아이디어를 내가 왜이 일을보고 있지 않다? 나는 첫 번째 값을 1 + 1i로 바꿨다. 혼란을 없애기 위해 질문을 재 편집했지만, 나는 1을 얻는 대신에 이것을 얻는다. –
첫 번째'strtok'은'NULL'을 반환하지 않는다고 가정했다. –