In C, how do i insert an integer into a string?

心已入冬 提交于 2020-01-22 02:20:08

问题


My code gets a string of characters. For example "aaabbdddd" A function inserts to a new string the letters and the amount of times they appear. So the output for this specific string should be "a3b2d4". My question is how do I insert the numbers into the string? I tried using itoa and it converted the entire string into a single number. Here's my code:

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define LONG 80
#define SHORT 20
void longtext(char longtxt[LONG], char shorttxt[SHORT])
{
    int i, j=0, count=0, tmp;
    char letter;
    for (i = 0; i <= strlen(longtxt); ++i)
    {
        if (i == 0)
        {
            letter = longtxt[i];
            ++count;
        }
        else if (letter == longtxt[i])
            ++count;
        else
        {
            shorttxt[j] = letter;
            shorttxt[j + 1] = count;
            j += 2;
            count = 1;
            letter = longtxt[i];
        }
    }
}
int main()
{
    char longtxt[LONG] = "aaabbdddd",shorttxt[SHORT];
    longtext(longtxt,shorttxt);
    printf("%s", shorttxt);
}

I believe that the problem is in the line "shorttxt[j + 1] = count;" because thats where I want to put the int into the string.


回答1:


You are right, the problem is the line:

shorttxt[j + 1] = count;

Change it to:

shorttxt[j + 1] = count + '0';

And you should be fine.

The reason is that you don't want the number itself in the string, but the character representing the number. Adding the ascii value for the character 0 to the actual number gives you the correct result.




回答2:


Try this code, it uses snprintf to convert integer to string.

NOTE: You may need to increase the size from 2, if count exceeds a character size.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define LONG 80
#define SHORT 20
void longtext(char longtxt[LONG], char shorttxt[SHORT])
{
    int i, j=0, count=0, tmp;
    char letter;
    for (i = 0; i <= strlen(longtxt); ++i)
    {
        if (i == 0)
        {
            letter = longtxt[i];
            ++count;
        }
        else if (letter == longtxt[i])
            ++count;
        else
        {
            shorttxt[j] = letter;
            snprintf(&shorttxt[j + 1],2,"%d",count);
            j += 2;
            count = 1;
            letter = longtxt[i];
        }
    }
}
int main()
{
    char longtxt[LONG] = "aaabbdddd",shorttxt[SHORT];
    longtext(longtxt,shorttxt);
    printf("%s", shorttxt);
}


来源:https://stackoverflow.com/questions/34060329/in-c-how-do-i-insert-an-integer-into-a-string

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!