-
problem using 'memset'
Given the following code:
Code:
/* result */
char result_ans[8];
memset(&result_ans, ' ', (strlen(result_ans) - 1));
result_ans[strlen(result_ans) - 1] = '\0';
/* store */
char store_ans[11];
memset(&store_ans, ' ', (strlen(store_ans) - 1));
store_ans[strlen(store_ans) - 1] = '\0';
/* promptId */
char promptId_ans[10];
memset(&promptId_ans, ' ', (strlen(promptId_ans) - 1));
promptId_ans[strlen(promptId_ans) - 1] = '\0';
I'm getting a seg fault on the last memset (for promptId). I've isolated it to this last one by commenting out until it worked. I've also used just 'promptId' in the memset function instead of '&promptId' - but to no avail.
Anyone see a problem?
Thanks,
Ezra
-
You're using strlen on uninitialized stings. Did you mean to use sizeof in this instance?
Code:
#include <stdio.h>
#include <string.h>
int main(void)
{
char result_ans[8];
char store_ans[11];
char promptId_ans[10];
memset(result_ans, ' ', sizeof result_ans - 1);
result_ans[sizeof result_ans - 1] = '\0';
printf("result_ans = \"%s\"\n", result_ans);
memset(store_ans, ' ', sizeof store_ans - 1);
store_ans[sizeof store_ans - 1] = '\0';
printf("store_ans = \"%s\"\n", store_ans);
memset(promptId_ans, ' ', sizeof promptId_ans - 1);
promptId_ans[sizeof promptId_ans - 1] = '\0';
printf("promptId_ans = \"%s\"\n", promptId_ans);
return 0;
}
/* my output
result_ans = " "
store_ans = " "
promptId_ans = " "
*/
-
Thaaaat got it. Thanks for the quick response!!