C Programming - Strings - Discussion

Discussion Forum : Strings - General Questions (Q.No. 1)
1.
Which of the following function sets first n characters of a string to a given character?
strinit()
strnset()
strset()
strcset()
Answer: Option
Explanation:

Declaration:

char *strnset(char *s, int ch, size_t n); Sets the first n characters of s to ch

#include <stdio.h>
#include <string.h>

int main(void)
{
   char *string = "abcdefghijklmnopqrstuvwxyz";
   char letter = 'x';

   printf("string before strnset: %s\n", string);
   strnset(string, letter, 13);
   printf("string after  strnset: %s\n", string);

   return 0;
}

Output:

string before strnset: abcdefghijklmnopqrstuvwxyz

string after strnset: xxxxxxxxxxxxxnopqrstuvwxyz

Discussion:
24 comments Page 1 of 3.

Kathir said:   9 years ago
It sets the portion of characters in a string to given character.
String before strnset: abcdefghijklmnopqrstuvwxyz

String after strnset: xxxxxxxxxxxxxnopqrstuvwxyz

The user want to replace abcdefghijklm by using 'x' and given position is 13 .so 'a' to 'm' is replaced by 'x'. finally got xxxxxxxxxxxxxnopqrstuvwxyz.
and one thing

Use this program:

#include <stdio.h>
#include <string.h>

int main(void)
{
char string[70] = "abcdefghijklmnopqrstuvwxyz";
char letter = 'x';
printf("string before strnset: %s\n", string);
strnset(string, letter, 13);
printf("string after strnset: %s\n", string);
return 0;
}

Gourav said:   1 decade ago
Why no output is coming for this code ?

#include<stdio.h>
int xstrlen (char *);
void xstrcat (char*,char*,int );
main ()
{
char source []="hello";
char target [20]="world";
int length= xstrlen(target);
xstrcat(target,source,length);
printf("source string=%s",source);
printf("target string=%s",target);
}

int xstrlen (char *t)
{
int len=0;
while (*t!='\0')
len++;
return (len);

}

void xstrcat (char *t,char *s,int l)

{

while (*s!='\0')
{
t=t+l;
*t=*s;
t++;
s++;
}
*t='\0';
}

Daniel H said:   1 decade ago
strnset isn't a standard function. Consider using memset, which is a standard function.

Note also that string points to a string literal, which isn't guaranteed to be modifiable.

Consider using the following program:

#include <stdio.h>
#include <string.h>

int main(void)
{
char string[] = "abcdefghijklmnopqrstuvwxyz";

printf("string before memset: %s\n", string);
memset(string, 'x', 13);
printf("string after memset: %s\n", string);
return 0;
}

Gaurav said:   1 decade ago
//This is not working please have a look
#include<stdio.h>
#include<conio.h>
int main()
{
int p=1;
char name[15];
while(p)
{
printf("Enter your name\n");
gets(name);
printf("Hello %s\n",name);
printf("Enter p\n");
scanf("%d",&p);
}
}

IIIT,bas said:   1 decade ago
strnset ia a function which sets first n characters of a string to a given character.
For ex:
Look at the above program.
In that example step4:
we gave the letter as 'x'.
And in step 6:we gave n value as'13'.
So 'x' will replace that first 13 characters.
Hope you can understand prathyusha........

Adrija said:   8 years ago
Note: GCC Compiler (32 Bit Linux Platform).

#include<stdio.h>
#include<string.h>
int main()
{
char s[90]="endl";
printf("%s",strcat (s,strcat(s,s)));
return 0;
}

Why it shows segment fault?

Please, anyone explain me.
(1)

Krishna said:   1 decade ago
int main(void)
{
char *string = "abcdefghijklmnopqrstuvwxyz";
char letter = 'x';

printf("string before strnset: %s\n", string);
strnset(string, letter, 13);
printf("string after strnset: %s\n", string);

return 0;
}

S.SAHA said:   4 years ago
This function return values that are as follows;

if Return value < 0 then it indicates str1 is less than str2.
if Return value > 0 then it indicates str2 is less than str1.
if Return value = 0 then it indicates str1 is equal to str2.

RADHA said:   1 decade ago
void main()
{
float a=0.7;
if(0.7>a)
printf("hi");
else

printf("bye");
}

Answer is hi and why?

I think, 0.7 is treat as double by default, isn't it?

Could anyone give me perfect answer for this?

Abhishek Singh said:   8 years ago
@ALL.

#include<bits/stdc++.h>
using namespace std;
main(){
char s[]="abhishek";
char p[]="abhiaana";
strnset(s,'l',3);
memset(p,'o',2);
cout<<s<<' '<<p;
}


Post your comments here:

Your comments will be displayed after verification.