Need matlab coding for the given c program

#include <stdio.h>
int main()
{
char a[100];
int i;
i=0;
scanf("%c",&a[i]);
while(a[i]!='$')
{
i++;
scanf("%c",&a[i]);
}
a[i]='\0';
i=0;
while(a[i]!='\0')
{
printf("%c",a[i]);i++;
}
return 0;
}

댓글 수: 3

darova
darova 2020년 3월 30일
You are declaring a variable but not assigning any value (no initialization). How should it work?
leo john
leo john 2020년 3월 30일
Kindly compile it online compiler it will work.input is type any text or line until dollar sign is given it will display the same text .similar coding is needed in matlab
@darova: The scanf line is assigning a value to a[i]

댓글을 달려면 로그인하십시오.

답변 (2개)

darova
darova 2020년 3월 30일

0 개 추천

try this
i = 1;
a{1} = '1';
while ~strcmp(a(i),'&')
str = input('','s');
i = i + 1;
a{i} = str;
end

댓글 수: 6

leo john
leo john 2020년 3월 31일
Thanks for replying me darova .Above code works only when '&' sign is given in the beginning of the new line, means string comapare function compares each string with '&' but i need character by character comparison so that given any number of lines or text can be terminated by entering '&' or '$' in the middle of the text or lines. If there is any possible kindly do the needful thanks in advance.
Answer fixed:
a{1} = ' ';
while a{i}~='$'
str = input('','s');
c = c + 1;
i=c;
a{c} = str;
end
disp(char(a));
Use strfind
while ~isempty(strfind((a{i},'&')))
leo john
leo john 2020년 4월 18일
Dear Darova sir,
Very many thanks for solving my issues.I would like to acknowledge you specially in my book publication work. I am writing a "Matlab programming for beginners" book kindly sent your designation and institution or place of work and city details if interested.
Thanks and Regards
Dr.F.Leo John
Note that using input() like that is not the same as the C code. The C code retrieves one character at a time from standard input, and finds the first '$' character, leaving standard input positioned immediately after the '$'. The loop with input() on the other hand does the equivalent of getline() each time and checks whether the input line has at least one '$' character. This is a very different requirement.
Remember, input() with 's' option fetches a line. You store the entire line into a{i}. You then test whether that entire line ~= '$', which is a vector test. The test fails if any element of the vector is 0, which would occur if any element of a{i} did equal '$'
leo john
leo john 2020년 4월 18일
Yes single line text should be terminated only by $ sign that is the program not by zero vector.Else err msg will be given

댓글을 달려면 로그인하십시오.

Walter Roberson
Walter Roberson 2020년 3월 31일

0 개 추천

MATLAB cannot code that. scanf() reads from standard input, but MATLAB does not have standard input.
If you had a fileid of an opened file, then
s = fscanf(fid, '%c%[^$]$', 2);
fprintf('%s', s);
This has the same behaviour as the C code: it extracts at least one character, and up to but excluding a $ character, and consumes the $ character leaving the pointer right after it; and it outputs the extracted string to the display without any newline.

카테고리

도움말 센터File Exchange에서 MATLAB Report Generator에 대해 자세히 알아보기

질문:

2020년 3월 30일

댓글:

2020년 4월 18일

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by