|
Why do you redefine the EXTENDED_NAME_FORMAT enumeration? 
|
|
|
|
|
I first try without defining enum after that try with enum. In both case I am getting compilation error.
|
|
|
|
|
Add these definition:
#define _WIN32_WINNT 0x0500
#define SECURITY_WIN32
Remove the redefinition of enum.
Define the sbstrTrustee variable.
// edited: also don't forget to include the Secur32.lib library.
|
|
|
|
|
Hi Victor,
I have modified program according to your suggestion but I am not getting expected result. I want to use NameFullyQualifiedDN enum value and get the fully qualified distinguished name (for example, CN=Jeff Smith,OU=Users,DC=Engineering,DC=Microsoft,DC=Com).
Regards,
Rajnesh
|
|
|
|
|
Sorry, I don't know what is wrong/correct in your test.
I've just tested your code and got the result in the form:
[my_domain_name].[my_computer_name]$
wich is in my case 100% correct.
|
|
|
|
|
Hi Victor,
There was configuration issue with my windows laptop, so I was facing issue. Thanks for your feedback.
|
|
|
|
|
Good morning,
You are including the wrong header. Remove secext.h and add:
#include <Security.h> The error message is telling you that it doesn't know the definition of SEC_ENTRY .
|
|
|
|
|
Hi All,
//program to place even numbers in one array and odd numbers in another array
PFA code.
#include<stdio.h>
void main()
{
int array[20],array1[20],array2[20],i,n,j;
printf("enter how many array elements\n");
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&array[i]);
="" }
="" ***************even="" odd="" in="" array="" elements***************=""
for(i="0;i<n;i++)
{
" if(array[i]%2="=0)
"
="" {
="" array1[i]="array[i];//even" array
="" }
="" else
="" array2[i]="array[i];//odd"
}
="" ******************printing="" elements)*********="" for(i="0;i<n;i++)
" printf("="" even="" is:%d\n",array1[i]);="" printing="" array
}
printf("\n");
for(j="0;j<n;j++)
{
" is="" :%d\n",array2[j]);="" array
}
}
="" output="" what="" i="" got:
enter="" how="" many="" elements
5
1
2
3
4
5
="" is:1970776="" to="" avoid="" this="" is:2
="" is:-1968723210="" my="" output
="" is:4
="" is:4202864="" this
="" :1
="" ="" am="" getting="" :3
="" :32762="" why="" addresss="" junl="" value
="" :5
--------------------------------
process="" exited="" after="" 7.24="" seconds="" with="" return="" value="" 5
press="" any="" key="" continue="" .="" .<="" pre="">
modified 18-Feb-21 0:51am.
|
|
|
|
|
You are putting holes in your arrays of even and odd elements. In order to avoid that, you need to maintain two separate variables to keep track of how many even and odd items have been added so far. Try
#include <stdio.h>
#define SIZE 20
int main()
{
int items, odd_items, even_items;
int array[SIZE], odd[SIZE], even[SIZE];
printf("enter how many array elements\n");
scanf("%d",&items);
odd_items = even_items = 0;
for (int n=0; n<items; ++n)
{
printf("enter item %d:\n", n);
scanf("%d", &array[n]);
if ( (array[n] % 2) == 0)
{
even[even_items] = array[n];
++even_items;
}
else
{
odd[odd_items] = array[n];
++odd_items;
}
}
printf("array items\n");
for (int n=0; n<items; ++n)
printf("%d ", array[n]);
printf("\n");
printf("even array items\n");
for (int n=0; n<even_items; ++n)
printf("%d ", even[n]);
printf("\n");
printf("odd array items\n");
for (int n=0; n<odd_items; ++n)
printf("%d ", odd[n]);
printf("\n");
return 0;
}
"In testa che avete, Signor di Ceprano?"
-- Rigoletto
|
|
|
|
|
5, but you should get 10 for looking at code formatted this way.
|
|
|
|
|
Thank you.
"In testa che avete, Signor di Ceprano?"
-- Rigoletto
|
|
|
|
|
Hi,
#include<stdio.h>
int main()
{
char str[20] = "Hello";
char *const p=str;
*p='M';
printf("%s\n", str);
return 0;
}
output:
Mello
As per my knowledge when we use const then we can't change a char in t then how output is Mello instead of Hello.
|
|
|
|
|
You need to read the declaration right to left:
char *const p=str;
| | | |
| | | +- the variable p
| | +----- is a constant
| +---------pointer
+------------to a character
So const here applies to the pointer p and not to the data that it is pointing to. That would be:
const char* p=str;
|
|
|
|
|
Hi Richard,
Thank you for your reply. I understood the concept clearly.
Best Regards
Niharika
|
|
|
|
|
const applies to what's on its immediate left: a pointer (* ) or a type (char and many others, even ones that you've defined). If there's nothing on its left--that is, when it appears first--const applies to what's on its immediate right.
modified 15-Feb-21 7:23am.
|
|
|
|
|
Hi Greg,
Thank you for your immediate response. I understood the point clearly.
Regarda,
Niharika
|
|
|
|
|
Hi All,
I am learning callbacks in c.I found an example in callback but could not understand .Can some one please explain me how the flow of execution happens and brief explaination of program.
PFA code what I found.
<pre>* callback.c */
#include<stdio.h>
#include"reg_callback.h"
/* callback function definition goes here */
void my_callback(void)
{
printf("inside my_callback\n");
}
int main(void)
{
/* initialize function pointer to
my_callback */
callback ptr_my_callback=my_callback;
printf("This is a program demonstrating function callback\n");
/* register our callback function */
register_callback(ptr_my_callback);
printf("back inside main program\n");
return 0;
}
/* reg_callback.h */
typedef void (*callback)(void);
void register_callback(callback ptr_reg_callback);
/* reg_callback.c */
#include<stdio.h>
#include"reg_callback.h"
/* registration goes here */
void register_callback(callback ptr_reg_callback)
{
printf("inside register_callback\n");
/* calling our callback function my_callback */
(*ptr_reg_callback)();
}
|
|
|
|
|
void my_callback(void)...
int main(void)
{
callback ptr_my_callback = my_callback;
register_callback(ptr_my_callback);
}
typedef void (*callback)(void);
void register_callback(callback ptr_reg_callback)
{
(*ptr_reg_callback)();
}
The printf s are just there so that you can observe the flow of execution.
modified 10-Feb-21 11:52am.
|
|
|
|
|
You might already be familiar with callbacks and not realize it. If you've ever used qsort() or bsearch() , or another library function that takes a function pointer as an argument to help it do its work, you have already used callbacks!
For example the signature for qsort is
void qsort(void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *)); and might be used like this
struct foo {
char key[10];
int id;
};
int cmpfoo_bykey(const void *vp1, const void *vp2)
{
const struct foo *foo1 = vp1;
const struct foo *foo2 = vp2;
return strcmp(foo1->key, foo2->key);
}
int cmpfoo_byid(const void *vp1, const void *vp2)
{
const struct foo *foo1 = vp1;
const struct foo *foo2 = vp2;
return foo1->id - foo2->id;
}
int main()
{
struct foo my_data[100];
qsort(my_data, 100, sizeof(struct foo), cmpfoo_bykey);
qsort(my_data, 100, sizeof(struct foo), cmpfoo_byid);
return 0;
}
In the above example qsort() knows how to sort an array of items in a generic way, but not how to compare items. It gets around this limitation by using a callback function, that the programmer provides, that does know how to compare items in the array. So, whenever qsort() needs to know how two items in the array compare to each other, it calls back to the code provided by the programmer to determine how the two items compare to each other.
Keep Calm and Carry On
|
|
|
|
|
I'm programming in C in an embedded environment and I have a bit-bang software UART I would like to be able to hook up to a myPrintf function, that supports the standard printf syntax, e.g.
myPrintf("%s %3.2f\n", "Pi:", 3.14159); I would like to achieve this without having to use a big (=worst case length of "sentence" to transmit in a single myPrintf call) temporary buffer (otherwise, I could just go via sprintf). What I want to achieve is that my characters are sent over my UART "on the fly", so in the example above "Pi: " would be sent out over my UART before the float number has been converted to ASCII characters. Does anybody know how I can achieve this in the easiest way possible? Is the source code for printf available somewhere for public use so I can modify it to fit my needs?
|
|
|
|
|
Quote: Does anybody know how I can achieve this in the easiest way possible?
Not sure if easiest but one common way of doing it is to have printf call a putc -type function to send out each succesive character. In your case, the "putc" function would be the UART output function.
Quote: Is the source code for printf available somewhere for public use so I can modify it to fit my needs?
Plenty of those. One I've used before in an embedded environment is for Rabbit microcontrollers. You can find the relevant code here: DCRabbit_10/STDIO.LIB at master · digidotcom/DCRabbit_10 · GitHub[^]
Mircea
|
|
|
|
|
Mircea Neacsu wrote: Not sure if easiest but one common way of doing it is to have printf call a putc -type function to send out each succesive character. In your case, the "putc" function would be the UART output function. That sounds very convenient. I am working with STM32F-microcontrollers, would you happen to know if it's easy to replace the putc-function for their printf-function?Mircea Neacsu wrote: Plenty of those. One I've used before in an embedded environment is for Rabbit microcontrollers. You can find the relevant code here: DCRabbit_10/STDIO.LIB at master · digidotcom/DCRabbit_10 · GitHub[^] Awesome!
|
|
|
|
|
Quote: I am working with STM32F-microcontrollers, would you happen to know if it's easy to replace the putc-function for their printf-function?
No idea! you said you have the bit banging UART code; you just have to use it to send out one character.
Keep in mind also what @CPallini suggested: if you don't need a very general printf function you can have with a much simpler implementation. Look at this one for an example: sdcc/printf_small.c at master · darconeous/sdcc · GitHub[^]
Also, along the same lines, you scan the format specifier string and every time you encounter a '%' character you can use sprintf to print it in a small buffer.
Mircea
|
|
|
|
|
Probably existing printf code is too general for your system, so, it is probably better to make yourself an over-simplified version of it, tailored on your needs. Anyway, you know, in order to use just a small buffer you need to append characters to the buffer while there is still available space and wait patiently the transmission of characters in order to use the buffer again. This means you can't actually use a function call similar to the printf one.
"In testa che avete, Signor di Ceprano?"
-- Rigoletto
|
|
|
|
|
CPallini wrote: in order to use just a small buffer you need to append characters to the buffer while there is still available space and wait patiently the transmission of characters in order to use the buffer again. This means you can't actually use a function call similar to the printf one. It's a completely synchronuous bit-bang UART where I'm counting clock cycles. There is no DMA, timer interrupts, 1 byte FIFO, threading or anything fancy.
|
|
|
|