感谢所有帮助我解决此问题的人,我得以解决该问题。
You can use
sprintf(word, "%s ", dictn);
If your code is working with printf it should work with sprintf, provided you don't overflow "word", including the NULL termination, so you might have to resize "word" if it is smaller than dictn.
First of all, I'm assuming you have created arrays word
and dictn
with enough size to hold the maximum length string any of your files.
First fault:
In loops you've created, i
represents number of strings in input file and j
represents number of strings in dictionary. word
is your input string variable and dictn
is your dictionary string variable. But you want to retrieve and alter word's ith or dictn's jth character. This may cause an error because there can be a case like this:
Suppose there are 10 words at inp
file and 100 words at dictn
. And in your loops, i
have value of 8 and j
have value of 88. Corresponding these i
and j
values, word has string value of, say, apple
and dictn
has string value of apple
also. So this means apple
is the 8th word at input file and 88th word at dictionary file. And if one of those if conditions was satisfied, compiler tries to apply a statement like word[i]=dictn[j];
. This means word[8] = dictn[88];
for this example. But both of those string have apple
as values which consists only 5 characters! And this will cause an error since you've tried to retrieve 88th character of a 5-length string and assign it to the 8th character of a 5-length string. So your code is wrong, it will only work for some cases which will be a rare situation.
Second fault:
I assume you want to read whole dictionary file for every word in input file but you will be able to read it for only first word of input file since you don't reopen it or set position indicator at the beginning of dictionary file after you read whole dictionary.
Third fault:
Your first if statement will never be reached assuming you have created len1
and len2
variables as integers. Because in your if statement, there is a multiplication of a decimal number and an integer which will return 0 as a result and since fscanf()
ignores whitespaces, len1
and len2
will be at least 1.
Fourth fault:
Also your else if
statement will never be reached because if a string has same value with another, their first character will also be equal to each other and your if statement where you compare their first characters will be also accepted.
Actually, I would write a code as solution but first of all you need to correct things up which are logically wrong because I do not know what you are really try to achieve by your code -just because I commented with full of assumptions-. But I can provide you some guidelines:
len1
and len2
variables from int
to float
and cast values which return from strlen()
functions to float
. dict
file for every iteration of outside loop. (And do not forget not to close it). inp
file, you can use a fpos_t
type of variable to track your position indicator of your inp
file ( fgetpos()
to get current position and fsetpos()
to change position with value of fpos_t
variable. You can search them.) and type the word with fprintf()
or fputs()
to that location to change that string.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.